https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111517
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2023-09-21 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- On the subject of: _1 = MEM[(unsigned int *)0B + -320B + ivtmp.27_36 + ivtmp.16_4 * 4]; during the local-pure-const2 pass: Indirect ref write is not const/pure vs: NULL memory access; terminating BB But that MEM is not exactly an NULL Pointer access ... _39 = (sizetype) this_9(D); ivtmp.27_38 = _39 * 18446744073709551613; ivtmp.28_42 = _39 + 100; This is also definitely IV-OPTs messing up ... Though before GCC 12 it had that too but the local-pure-const2 pass it thought something different about it: scanning: _1 = MEM[(unsigned int *)0B + -320B + ivtmp.27_34 + ivtmp.16_3 * 4]; Indirect ref to local or readonly memory is OK