aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarf2out.c16
-rw-r--r--gcc/jump.c5
3 files changed, 22 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 022af0a..c71f379 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 35c26b6..edb93f9 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -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;
}
diff --git a/gcc/jump.c b/gcc/jump.c
index 533f11c..28a9b0f 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -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);
}