------- 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