https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115199
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |15.0 Status|UNCONFIRMED |NEW CC| |rguenth at gcc dot gnu.org Keywords| |alias Last reconfirmed| |2024-05-22 Ever confirmed|0 |1 --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. ``` Deleted dead call: # .MEM_6 = VDEF <.MEM_4> # PT = null { D.2790 } # ALIGN = 8, MISALIGN = 0 e_7 = memcpyD.1670 (f_5, "z", 1); ``` Note the volatile makes the difference. It seems like we miss that the memory escapes through the volatile store so we delete the memcpy as being dead.