https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90886
Bug ID: 90886 Summary: loop/while/for problem Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: joe at freakyacres dot com Target Milestone: --- I apologize because this all got a little bit above my head. But the following code only runs the "for" loop once. volatile unsigned char x; int main() { while (1) { for (unsigned char i = 0 ; i < 128 ; i++) { x = i; } } } Apparently compiles to... $ avr-g++ -Os -mmcu=atmega328p main.cpp -o main.elf $ avr-objdump --demangle -d main.elf (other code omitted) 00000090 <main>: 90: 10 92 00 01 sts 0x0100, r1 ; 0x800100 <_edata> 00000094 <_exit>: 94: f8 94 cli 00000096 <__stop_program>: 96: ff cf rjmp .-2 ; 0x96 <__stop_program> $ avr-g++ --version Replacing the for loop 128 with any other value fixes the problem. Much work was done at the github link below where minds much more advanced than my own researched and confirmed what was happening. https://github.com/arduino/Arduino/issues/8973 https://forum.arduino.cc/index.php?topic=621017.0