aboutsummaryrefslogtreecommitdiff
path: root/gcc/except.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-02-25 15:45:42 -0800
committerRichard Henderson <rth@gcc.gnu.org>1999-02-25 15:45:42 -0800
commite881bb1b1b60bca2b51088b8c6946feb96b0047f (patch)
tree5f11cf1c6b61122849435f2ab564e45e67595e64 /gcc/except.c
parent001e880a269a8b586ee074918b6707edb190ea7c (diff)
downloadgcc-e881bb1b1b60bca2b51088b8c6946feb96b0047f.zip
gcc-e881bb1b1b60bca2b51088b8c6946feb96b0047f.tar.gz
gcc-e881bb1b1b60bca2b51088b8c6946feb96b0047f.tar.bz2
Flow rewrite to use basic block structures and edge lists.
From-SVN: r25450
Diffstat (limited to 'gcc/except.c')
-rw-r--r--gcc/except.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/except.c b/gcc/except.c
index ae8fea1..6e126fb 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -1967,11 +1967,17 @@ expand_rethrow (label)
label = last_rethrow_symbol;
emit_library_call (rethrow_libfunc, 0, VOIDmode, 1, label, Pmode);
SYMBOL_REF_USED (label) = 1;
+
+ /* Search backwards for the actual call insn. */
insn = get_last_insn ();
- val = GEN_INT (eh_region_from_symbol (label));
+ while (GET_CODE (insn) != CALL_INSN)
+ insn = PREV_INSN (insn);
+ delete_insns_since (insn);
+
/* Mark the label/symbol on the call. */
+ val = GEN_INT (eh_region_from_symbol (label));
REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EH_RETHROW, val,
- REG_NOTES (insn));
+ REG_NOTES (insn));
emit_barrier ();
}
else