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

Reply via email to