https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111517
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Optimization -O1 removes |[12/13 Regression] |necessary loop for |Optimization -O1 removes |initialization |necessary loop for | |initialization Known to work|14.0 | Target Milestone|--- |11.5 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- -fno-ivopts allows the code to pass. The difference between GCC 13 and the trunk is: trunk: _30 = &MEM[(unsigned int *)0B + -320B + ivtmp.27_37 + ivtmp.16_4 * 4]; _1 = *_30; vs: GCC 13: _1 = MEM[(unsigned int *)0B + -320B + ivtmp.27_36 + ivtmp.16_4 * 4]; And the call TestClass::init (&tmp); is still there in _GLOBAL__sub_I__ZN9TestClass4initEv ...