https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92750
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2025-07-25 --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. D.225026 ={v} {CLOBBER(eos)}; MEM[(struct Vec *)&a] ={v} {CLOBBER(bob)}; - MEM[(struct Vec *)&a] ={v} {CLOBBER(bob)}; - MEM[(struct Vec *)&a] ={v} {CLOBBER(bob)}; - MEM[(struct Vec *)&a] ={v} {CLOBBER(bob)}; - MEM[(struct Vec *)&a] ={v} {CLOBBER(bob)}; _48 = (unsigned char) invA_8; MEM[(struct Vec *)&a].val = _48; MEM[(struct Vec *)&a + 1B] ={v} {CLOBBER(bob)}; MEM[(struct Vec *)&a + 1B].val = _48; MEM[(struct Vec *)&a + 2B] ={v} {CLOBBER(bob)}; - MEM[(struct Vec *)&a + 2B] ={v} {CLOBBER(bob)}; MEM[(struct Vec *)&a + 2B].val = _48; still happens. I would assume since (in this case) struct Vec is sizeof(1) and the store `MEM[(struct Vec *)&a + 2B].val` stores the whole thing, then the clobber could be removed too.