aboutsummaryrefslogtreecommitdiff
path: root/gcc/flow.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-10-08 10:01:01 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-10-08 10:01:01 -0700
commitc2b7e122db71c5e8a4164800fb5f103548881bd1 (patch)
tree93c2e1f453056d3066662f436a7ea6efa96c8faf /gcc/flow.c
parent0cc291f75906d763855f3ad7c067379bfd19411d (diff)
downloadgcc-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/flow.c')
-rw-r--r--gcc/flow.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 773aaf2..bbf21f1 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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)