http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52828
Bug #: 52828 Summary: powerpc -m32 -Os writes register saves below stack Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: amo...@gmail.com An example is gcc.c-torture/compile/20020604-1.c compiled with -m32 -g -Os -fno-omit-frame-pointer. (The -fno-omit-frame-pointer is there just to get a reg saved. An asm volatile reg clobber gives the same result.) The relevant part of the prologue code looks like lis 0,0xffff mr 12,1 ori 0,0,32736 stw 31,-4(12) stwux 1,1,0 .cfi_def_cfa_offset 32800 .cfi_offset 31, 32796 Notice the r31 save before the stack adjust. Another consequence of the reordering is wrong debug/eh_frame info for r31.