https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108355
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. We're doing Value numbering stmt = _2 = e[5][a.0_1]; Skipping possible redundant definition e[5][0] = 1; Setting value number of _2 to _2 (changed) now, by skipping the def we're no longer then optimistically assuming a.0_1 == 0 when formerly using the assignment-from-constant _3 trick. That wasn't done by design - if we'd handle this optimistically by design we'd have more canonical reference ops for e[5][a.0_1]. Not sure if worth fixing.