Что за цирк с типом данных int?

Посмотрел в ASM - из за оптимизации (для последующего Serial.print((long)i) )под локальную переменную отводится на кадр на стеке, а 4 регистра и дальше всё проходит как с LONG. Компилятор видит что цикл бесконечный и вывод “End” в окончательном коде вообще отсутствует…
Стоит запросить адрес переменной i и фокус с регистрами у оптимизатора не выходит и всё начинает работать:

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("Start");
  for (int i = 32000; i <= 32767; i++) {
    Serial.print((int)&i, HEX);
    Serial.print(" ");
    Serial.println(i);
  }
  Serial.println("End"); //никогда не выполнится и в итоговый код не попадает !
}