------- Comment #3 from amodra at bigpond dot net dot au 2005-11-16 11:03 ------- The testcase in comment #2 is invalid. You can't trash part of a function pointer (the toc pointer) and expect everything to be rosy. However, the testcase in comment #1 does indeed show the problem you describe.
0x0000000010000644 <loghelper+100>: ld r0,0(r29) 0x0000000010000648 <loghelper+104>: ld r2,8(r29) <- load func ptr toc 0x000000001000064c <loghelper+108>: mtctr r0 0x0000000010000650 <loghelper+112>: ld r0,128(r1) 0x0000000010000654 <loghelper+116>: std r0,144(r1) 0x0000000010000658 <loghelper+120>: nop 0x000000001000065c <loghelper+124>: lfd f0,144(r1) 0x0000000010000660 <loghelper+128>: fcfid f31,f0 0x0000000010000664 <loghelper+132>: lfd f0,-32696(r2) <- bad r2 !!! 0x0000000010000668 <loghelper+136>: fmul f31,f31,f0 0x000000001000066c <loghelper+140>: bctrl 0x0000000010000670 <loghelper+144>: ld r2,40(r1) -- amodra at bigpond dot net dot au changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amodra at bigpond dot net | |dot au Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2005-11-16 11:03:41 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24779