https://gcc.gnu.org/bugzilla/show_bug.cgi?id=73457
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-08-11 CC| |rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. This is unrolling happening too late or DOM not being able to simplify the reads from the initializer: <bb 2>: MEM[(event *)&events] = { 0, 1, 0, 0 }; _3 = MEM[(const event *)&events]; _ifc__2 = _3 == 0 ? 1 : 0; _8 = MEM[(const event *)&events + 4B]; _ifc__11 = _8 == 0 ? 1 : 0; __n_10 = _ifc__2 + _ifc__11; _70 = MEM[(const event *)&events + 8B]; _ifc__71 = _70 == 0 ? 1 : 0; __n_72 = __n_10 + _ifc__71; _30 = MEM[(const event *)&events + 12B]; _ifc__31 = _30 == 0 ? 1 : 0; __n_32 = _ifc__31 + __n_72; _6 = (int) __n_32; events ={v} {CLOBBER}; return _6; I think we have a dup of this somewhere.