https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93447
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The # RANGE [-35, 0] NONZERO 4294967261 # d_5 = PHI <0(2), -35(3)> _4 = d_5 != 0; # RANGE [0, 1] NONZERO 1 _12 = (int) _4; return _12; to: # RANGE [-35, 0] NONZERO 4294967261 # d_5 = PHI <0(2), -35(3)> # RANGE [0, 1] NONZERO 1 # prephitmp_13 = PHI <0(2), 1(3)> return prephitmp_13; optimization is performed by PRE, which is enabled also for -Os, so not sure why it doesn't trigger here. Richard? -O1 is a different thing, we intentionally don't enable various compile time or memory expensive optimizations at that level.