diff options
author | Richard Henderson <rth@cygnus.com> | 1998-10-08 10:01:01 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-10-08 10:01:01 -0700 |
commit | c2b7e122db71c5e8a4164800fb5f103548881bd1 (patch) | |
tree | 93c2e1f453056d3066662f436a7ea6efa96c8faf /gcc | |
parent | 0cc291f75906d763855f3ad7c067379bfd19411d (diff) | |
download | gcc-c2b7e122db71c5e8a4164800fb5f103548881bd1.zip gcc-c2b7e122db71c5e8a4164800fb5f103548881bd1.tar.gz gcc-c2b7e122db71c5e8a4164800fb5f103548881bd1.tar.bz2 |
flow.c (find_basic_blocks): Correctly determine when a call is within an exception region.
* flow.c (find_basic_blocks): Correctly determine when a call
is within an exception region.
From-SVN: r22928
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/flow.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 30e39a4..ecd9e05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Oct 8 17:00:18 1998 Richard Henderson <rth@cygnus.com> + + * flow.c (find_basic_blocks): Correctly determine when a call + is within an exception region. + Thu Oct 8 17:15:04 1998 Jeffrey A Law (law@cygnus.com) * Makefile.in (cpplib.o): Use unlibsubdir. @@ -314,6 +314,7 @@ find_basic_blocks (f, nregs, file, live_reachable_p) register RTX_CODE prev_code = JUMP_INSN; register RTX_CODE code; int eh_region = 0; + int call_had_abnormal_edge = 0; max_uid_for_flow = 0; @@ -335,7 +336,7 @@ find_basic_blocks (f, nregs, file, live_reachable_p) i++; else if (prev_code == CALL_INSN) { - if (nonlocal_label_list != 0 || eh_region) + if (call_had_abnormal_edge) i++; else { @@ -360,6 +361,10 @@ find_basic_blocks (f, nregs, file, live_reachable_p) if (code == CALL_INSN && in_libcall_block) code = INSN; + /* Record whether this call created an edge. */ + if (code == CALL_INSN) + call_had_abnormal_edge = (nonlocal_label_list != 0 || eh_region); + if (code != NOTE) prev_code = code; else if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_BEG) |