]> gcc.gnu.org Git - gcc.git/commitdiff
re PR debug/40462 (ICE in dwarf2out_begin_epilogue, at dwarf2out.c:2773 while compili...
authorJakub Jelinek <jakub@redhat.com>
Wed, 1 Jul 2009 19:25:52 +0000 (21:25 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 1 Jul 2009 19:25:52 +0000 (21:25 +0200)
PR debug/40462
* jump.c (returnjump_p): Revert last patch.
* dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.

From-SVN: r149150

gcc/ChangeLog
gcc/dwarf2out.c
gcc/jump.c

index 022af0a918e4710e4eb5b4537695ac0553105874..c71f379eb262a73ccb04eaa5ee50248b436486d7 100644 (file)
@@ -1,3 +1,9 @@
+2009-07-01  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/40462
+       * jump.c (returnjump_p): Revert last patch.
+       * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
+
 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        PR target/40575
index 35c26b607c0130eaa95bd19ade678332e744c943..edb93f94cf9754ccfc7aaaa8e469968bd0ff5c5b 100644 (file)
@@ -2759,6 +2759,22 @@ dwarf2out_begin_epilogue (rtx insn)
       if (CALL_P (i) && SIBLING_CALL_P (i))
        break;
 
+      if (GET_CODE (PATTERN (i)) == SEQUENCE)
+       {
+         int idx;
+         rtx seq = PATTERN (i);
+
+         if (returnjump_p (XVECEXP (seq, 0, 0)))
+           break;
+         if (CALL_P (XVECEXP (seq, 0, 0))
+             && SIBLING_CALL_P (XVECEXP (seq, 0, 0)))
+           break;
+
+         for (idx = 0; idx < XVECLEN (seq, 0); idx++)
+           if (RTX_FRAME_RELATED_P (XVECEXP (seq, 0, idx)))
+             saw_frp = true;
+       }
+
       if (RTX_FRAME_RELATED_P (i))
        saw_frp = true;
     }
index 533f11cab5ab992b9129dbd181dbd089fbbf109a..28a9b0f43ea4755781dd25d0a4b6e2b994249530 100644 (file)
@@ -893,13 +893,8 @@ returnjump_p_1 (rtx *loc, void *data ATTRIBUTE_UNUSED)
 int
 returnjump_p (rtx insn)
 {
-  /* Handle delayed branches.  */
-  if (NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == SEQUENCE)
-    insn = XVECEXP (PATTERN (insn), 0, 0);
-
   if (!JUMP_P (insn))
     return 0;
-
   return for_each_rtx (&PATTERN (insn), returnjump_p_1, NULL);
 }
 
This page took 0.114342 seconds and 5 git commands to generate.