https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78170
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Btw, I see at -Os: Starting new chain with statement: c.f6 = -1; The base object is: c Volatile access terminates all chains Processing basic block <4>: <bb 3>: e = *.LC0; c = e; c.f6 = -1; e ={v} {CLOBBER}; a.1_1 = a; b = a.1_1; the e ={v} {CLOBBER}; isn't a "volatile" stmt. Clobbers only should terminate aliasing chains.