https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116723
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (p.f0 != (-18)) For uint16_t, this is always true and is an always infinite loop. While for int16_t it is not and the loop is removed because you supplied -ffinite-loop. -ffinite-loop does NOT remove always infinite loops by design and is what is required by the C++ standard even. So invalid by design.