https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98474
--- Comment #1 from Jeff Hurchalla <jeffhurchalla at gmail dot com> --- If I change only the optimization level in the compile command to -O1, then echo prints the correct result 0. I have a non-minimal (but still very small) test file on godbolt at https://godbolt.org/z/4oqnYn The godbolt link goes to two separate tests which produce the incorrect results - you can toggle between them with the "#if 1". There are two interesting things about the godbolt tests: 1. I get correct results when I choose "x86_64 gcc 4.9.3" and incorrect results when I choose "x86_64 gcc 5.1". The few earlier versions than 4.9.3 that I tried were correct also, and the few later versions than 5.1 (including trunk) that I tried were incorrect also. 2. Using "x86_64 gcc 10.2" (and I'd suspect any version >= 5.1), the tests print to stdout "inside 'if'" but they do not print "inside 'while'" This should be impossible.