https://sourceware.org/bugzilla/show_bug.cgi?id=18414
Bug ID: 18414 Summary: TOC optimization Product: binutils Version: 2.25 Status: NEW Severity: normal Priority: P2 Component: ld Assignee: unassigned at sourceware dot org Reporter: hfinkel at anl dot gov Target Milestone: --- When TOC optimization is enabled, on a (big-endian) POWER7 system, ld will happily optimize this: .Ltmp526: addis 3, 2, .LC12@toc@ha .Ltmp1628: std 2, 40(1) ld 5, 0(27) ld 2, 8(27) ld 11, 16(27) ld 3, .LC12@toc@l(3) rldicl 4, 4, 0, 32 mtctr 5 bctrl ld 2, 40(1) to this: 0x00000000010101ac <+8924>: nop 0x00000000010101b0 <+8928>: std r2,40(r1) 0x00000000010101b4 <+8932>: ld r5,0(r27) 0x00000000010101b8 <+8936>: ld r2,8(r27) 0x00000000010101bc <+8940>: ld r11,16(r27) 0x00000000010101c0 <+8944>: ld r3,-32472(r2) 0x00000000010101c4 <+8948>: clrldi r4,r4,32 0x00000000010101c8 <+8952>: mtctr r5 0x00000000010101cc <+8956>: bctrl => 0x00000000010101d0 <+8960>: ld r2,40(r1) note that the read of r2 (originally in the addis instruction) has been moved to the ld after the ld which writes to r2. The addis is made into a nop. Unfortunately, this is incorrect in the case where the r2 value loaded from the function descriptor does not match the old r2 value. -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils