https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71055
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2016-05-11 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Target Milestone|--- |7.0 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Mine. Even without -fpic we miscompile this - but twice, cancelling the effect. With -fpic we miscompile it only once, namely v.i = 10; f (&v1, v); v.b = 0; Deleted redundant store v.b = 0; This is because we now figure that the read from v.b results in 0 which is of course wrong (technically it has _Bool type and thus its precision makes the value that GCC can use for optimization zero but it cannot use that "precision" to say the store is redundant (because it stores still 8 bits).