Хотя такая задача уже отпала, но кое-что я всё-таки нашёл для такого случая в "IAR Linker and Library Tools Reference Guide".
Директива линкера, которая позволяет перекрывать сегменты данных, и вместо "Error" линкер пишет "Warning".
Цитата
-z
Syntax -z[a][b][o][p][s]
Parameters
Description Use this option to reduce segment overlap errors to warnings, making it possible to
produce cross-reference maps, etc.
-za suppresses overlap errors between absolute entries. This is useful if you, for
example, have several absolutely placed variables on the same address. Note that -za
only ignores overlaps where both entries are absolutely placed.
All overlaps are reported by default. You can specify -zb and -zs to ignore overlaps to
the bit and SFR area respectively.
For the 8051 processor, only overlaps that do not involve bit segments or SFRs are
reported. You can specify -zo and -zp to report overlaps.
Using the -zs option requires that the used processor has a dedicated SFR area that
XLINK has been made aware of. The only processor that has a dedicated SFR area for
these purposes is the 8051. Using the -zs option for any other processor will generate
warning 68 but otherwise have no effect.
Use -zb to suppress error 24 (segment overlap) for segment overlaps where at least one
of the involved segments is a bit segment.
This option is identical to the Segment overlap warnings option in the linker category
in the IAR Embedded Workbench IDE.
По-моему мнению, в использовании статических/глобальных переменных нет ничего страшного. Доступ к ним прост и быстр: LDS, STS, LD, ST. Лично у меня, только небольшое количество переменных, используемых в процедурах, локальные, чтобы не перегружать стек.