The following testcase is miscompiled on ppc and ppc64 at -Os. In E::~E() GCSE changes: (insn 3 6 4 0 (set (reg/f:DI 121 [ this ]) (reg:DI 3 3 [ this ])) 297 {*movdi_internal64} (nil) (nil)) ... (insn 22 46 23 1 (set (reg/f:DI 125) (plus:DI (reg/f:DI 121 [ this ]) (const_int 16 [0x10]))) 208 {*adddi3_internal1} (nil) (nil)) ... (insn 30 29 31 2 (set (reg/f:DI 129) (plus:DI (reg/f:DI 121 [ this ]) (const_int 16 [0x10]))) 208 {*adddi3_internal1} (nil) (nil))
(each insn in a different bb, the last in EH bb) into: (insn 57 6 3 0 (set (reg/f:DI 130) (plus:DI (reg/f:DI 121 [ this ]) (const_int 16 [0x10]))) 208 {*adddi3_internal1} (nil) (nil)) (insn 3 57 4 0 (set (reg/f:DI 121 [ this ]) (reg:DI 3 3 [ this ])) 297 {*movdi_internal64} (nil) (nil)) and using pseudo 130 in place of 125 and 129. -- Summary: GCSE? caused miscompilation Product: gcc Version: 4.0.2 Status: UNCONFIRMED Severity: critical Priority: P2 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at redhat dot com CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: powerpc{,64}-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23299