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
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils