Цитата(Сергей Борщ @ Apr 28 2008, 21:18)

С оптимизацией Low - не получится. Компилятор не позволяет в режимах ниже High включать встраивание функций. Или придется существенно перерабатывать исходники ОС.Чувства - это неправильно. Всегда можно посмотреть листинг и понять - есть в нем код или нет. А выбрасывать код компилятор имеет право - если результат каких-либо действий не используется или если компилятор заранее знает, что какое-либо условие
всегда будет истинно или ложно. Обычно такое происходит, если какие-либо переменные, используемые в прерывании или (в случае ОС) в нескольких процессах объявлены без квалификатора volatile.
P.S.
это не раздвоение личности 
А если переменные объявлены все как extern, то может компилятор так делать?
Перед переменными поставил квалификатор volatile, теперь возникает новое предупреждение:
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement
И результат то же, не работает программа, т.е. не выполняет куски программы.
Пробывал поставить оптимизацию Medium - в этот раз выдает ошибку:
Error[e18]: Range error,
PC offset out of range. Valid range is -4096 (-0x1000) to 4094 (0x0FFE).
File: F:\RegMik\Programms\IAR_AVR_scmRTOS\scmRTOS\AVR\OS_Target_asm.s90, Line: 234
Source: xjmp ContextSwitcher_ISR
Where $ = #no label found# + 0x2C [0x2C]
in module "scmRTOS_Asm" (F:\RegMik\Programms\IAR_AVR_scmRTOS\УЗ2(RS485)\Debug\Obj\OS_Target_asm.r90),
offset 0x2C in segment part 1, segment INTVEC
What: L_RestoreContext - ($ + 2) [0x103C]
Allowed range: 0xFFFFF000 - 0xFFF
Operand: L_RestoreContext [0x106a]
in module scmRTOS_Asm (F:\RegMik\Programms\IAR_AVR_scmRTOS\УЗ2(RS485)\Debug\Obj\OS_Target_asm.r90),
Offset 0x0 in segment part 2, segment CO
Что можете сказать по этому поводу?