Reducing a cc1 miscompilation when using lto I noticed that the problem was nonoverlapping_component_refs_p returning true because we had two different field_decls for the succs field in basic_block.
Rich asked me to put an assert that the field is being merged and reduce more using that assert. To reproduce the issue: *) patch gcc to add the assert *) cc1 -quiet -O2 -flto cfgrtl.i -o cfgrtl.s *) as cfgrtl.s -o cfgrtl.o *) lto1 -quiet -O2 cfgrtl.o -o foo.s -- Summary: field not merged causes cc1 to be miscompiled Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: espindola at gcc dot gnu dot org GCC build triplet: x86_64-linux-gnu GCC host triplet: x86_64-linux-gnu GCC target triplet: x86_64-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42020