https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125365
Drea Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2026-05-18
--- Comment #3 from Drea Pinski <pinskia at gcc dot gnu.org> ---
There is a write to tmp inbetween the calls:
# VUSE <.MEM_1(D)>
_5 = FOO::operator[] (_12, 1);
_27 = _5 << 16;
_28 = _9 | _27;
# .MEM_30 = VDEF <.MEM_1(D)>
MEM <struct array> [(value_type &)&D.53705]._M_elems[0] = _28;
# VUSE <.MEM_30>
_35 = FOO::operator[] (_12, 1);
But it seems like we don't realize that write does not interfer.
I have not looked into what changed between GCC 15.1.0 and 15.2.0 though ...