------- Comment #14 from atgraham at gmail dot com 2006-08-14 18:16 ------- The following patch to the 4.1.1 release code appears to fix the problem. Though I have not been able to convince myself that this is the CORRECT solution to the problem (and am doubtful that it is), testing this fix with a very large and complex application has been very successful.
--- old/gcc/config/rs6000/rs6000.c 2006-08-10 11:26:48.000000000 -0400 +++ new/gcc/config/rs6000/rs6000.c 2006-08-10 22:46:55.000000000 -0400 @@ -18993,7 +18993,7 @@ HOST_WIDE_INT offset; if (from == HARD_FRAME_POINTER_REGNUM && to == STACK_POINTER_REGNUM) - offset = info->push_p ? 0 : -info->total_size; + offset = info->push_p ? 8 : -info->total_size; else if (from == FRAME_POINTER_REGNUM && to == STACK_POINTER_REGNUM) { offset = info->push_p ? 0 : -info->total_size; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28493