From: Jason Merrill Date: Fri, 12 Dec 1997 06:12:03 +0000 (+0000) Subject: flow.c (find_basic_blocks): A CALL_INSN that can throw starts a new basic block. X-Git-Tag: releases/libf2c-0.5.21~385 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=74d7ab557f039cde838e431c610535c57b2476df;p=thirdparty%2Fgcc.git flow.c (find_basic_blocks): A CALL_INSN that can throw starts a new basic block. * flow.c (find_basic_blocks): A CALL_INSN that can throw starts a new basic block. (find_basic_blocks_1): Likewise. From-SVN: r17055 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d871668bd96f..a072e14e5091 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Dec 11 22:02:10 1997 Jason Merrill + + * flow.c (find_basic_blocks): A CALL_INSN that can throw starts + a new basic block. + (find_basic_blocks_1): Likewise. + Thu Dec 11 21:08:48 1997 Jason Merrill * except.c (use_eh_context): Don't copy_rtx a REG. diff --git a/gcc/flow.c b/gcc/flow.c index 90df30a361a4..720886d79d6d 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -304,6 +304,7 @@ flow_analysis (f, nregs, file) { register RTX_CODE prev_code = JUMP_INSN; register RTX_CODE code; + int eh_region = 0; max_uid_for_flow = 0; @@ -316,7 +317,7 @@ flow_analysis (f, nregs, file) || (GET_RTX_CLASS (code) == 'i' && (prev_code == JUMP_INSN || (prev_code == CALL_INSN - && nonlocal_label_list != 0) + && (nonlocal_label_list != 0 || eh_region)) || prev_code == BARRIER))) i++; @@ -325,6 +326,10 @@ flow_analysis (f, nregs, file) if (code != NOTE) prev_code = code; + else if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_BEG) + ++eh_region; + else if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EH_REGION_END) + --eh_region; } } @@ -418,7 +423,7 @@ find_basic_blocks (f, nonlocal_label_list) || (GET_RTX_CLASS (code) == 'i' && (prev_code == JUMP_INSN || (prev_code == CALL_INSN - && nonlocal_label_list != 0 + && (nonlocal_label_list != 0 || eh_note) && ! find_reg_note (insn, REG_RETVAL, NULL_RTX)) || prev_code == BARRIER))) {