Да,такое явление есть, и не только с ADS... Например есть ф-ция какой-то Task
void task_func(void * par)
{
int var1;
for(;;)
{
//do_something
}
}
<\pre>
Так как каждая Task имеет собственный stack,
то var1 фактически является static/global,и
использование var1 происходит с учетом этого.
При высоких ур-нях оптимизации компиляторы
ADS,RVDT,IAR,не зная о глобальной сути var1,
оптимизируют ее как локальную, причем не всегда,
а в зависимости от конкретного кода...
Единственное лекарство здесь (как Вы справедливо
заметили) - объявить var1 как volatile, а иногда и
static volatile...