[Bug bootstrap/43403] [4.5 Regression] ICE in stage1 compiling __bswapdi2

jakub at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Mar 17 16:37:00 GMT 2010



------- Comment #5 from jakub at gcc dot gnu dot org  2010-03-17 16:36 -------
var-tracking expects that if frame_pointer_rtx (resp. arg_pointer_rtx,
depending on whether FRAME_POINTER_CFA_OFFSET or ARG_POINTER_CFA_OFFSET is
defined)
is said to be eliminated (to stack_pointer_rtx in case of
!frame_pointer_needed), then it is actually eliminated.  Apparently that's not
the case on PA, which happily uses both %r3 and %r30 in the code.
I guess
--- var-tracking.c.jj22010-03-17 15:29:42.000000000 +0100
+++ var-tracking.c2010-03-17 17:15:09.000000000 +0100
@@ -7942,6 +7942,11 @@ vt_init_cfa_base (void)
 #else
   cfa_base_rtx = arg_pointer_rtx;
 #endif
+  if (cfa_base_rtx == hard_frame_pointer_rtx)
+    {
+      cfa_base_rtx = NULL_RTX;
+      return;
+    }
   if (!MAY_HAVE_DEBUG_INSNS)
     return;


can fix this, that will rule out PA with its arg_pointer_rtx ==
frame_pointer_rtx == hard_frame_pointer_rtx.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43403



More information about the Gcc-bugs mailing list