http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57865
Bug ID: 57865 Summary: Broken _save64gpr and _rest64gpr usage Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: sebastian.hu...@embedded-brains.de Created attachment 30483 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30483&action=edit Test case. The 64-bit GPR save and restore sequence is broken and destroys the link register saved on the stack: powerpc-eabi-gcc -mcpu=8540 -mspe -mabi=spe -mfloat-gprs=double -Os -S test.c diff -u test-4.7.2.s test-4.8.1.s --- test-4.7.2.s 2013-07-09 13:09:56.418360402 +0200 +++ test-4.8.1.s 2013-07-09 13:31:59.097519823 +0200 @@ -6,7 +6,7 @@ f: stwu 1,-56(1) mflr 0 - addi 11,1,-88 + addi 11,1,-80 stw 0,60(1) bl _save64gpr_29 mr 29,3 @@ -15,16 +15,16 @@ stw 6,24(1) bl g lwz 5,16(1) + lwz 6,24(1) + evmergelo 31,3,4 stw 3,8(1) stw 4,12(1) mr 3,29 - lwz 6,24(1) mr 4,30 - evldd 31,8(1) bl h - addi 11,1,-88 + addi 11,1,-80 efdctsiz 3,31 b _rest64gpr_29_x .size f, .-f - .ident "GCC: (GNU) 4.7.2" + .ident "GCC: (GNU) 4.8.1" .gnu_attribute 4, 2