diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-04-15 15:20:58 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-04-15 15:20:58 +0000 |
commit | 8c8b35e212d1bfbcf2ef28ed08605a6bf4e28fc2 (patch) | |
tree | 821e1bef737bb762147038f329cc098df7dca708 /gcc/flow.c | |
parent | 8a126e61b7f3654a47b3140885100d16ee5d140b (diff) | |
download | gcc-8c8b35e212d1bfbcf2ef28ed08605a6bf4e28fc2.tar.gz |
* flow.c (count_basic_blocks, find_basic_blocks_1): Remove last change.
* optabs.c (emit_libcall_block): If have REG_EHG_REGION, update
region number to -1.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33164 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 49 |
1 files changed, 16 insertions, 33 deletions
diff --git a/gcc/flow.c b/gcc/flow.c index c0583e87f05..9f7537e3aea 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -462,7 +462,6 @@ count_basic_blocks (f) register int count = 0; int eh_region = 0; int call_had_abnormal_edge = 0; - int in_libcall = 0; prev_code = JUMP_INSN; for (insn = f; insn; insn = NEXT_INSN (insn)) @@ -473,17 +472,9 @@ count_basic_blocks (f) || (GET_RTX_CLASS (code) == 'i' && (prev_code == JUMP_INSN || prev_code == BARRIER - || (prev_code == CALL_INSN - && call_had_abnormal_edge && in_libcall == 0)))) + || (prev_code == CALL_INSN && call_had_abnormal_edge)))) count++; - /* Track whether or not we are in a LIBCALL block. These must - all be within the same basic block. */ - if (find_reg_note (insn, REG_LIBCALL, NULL_RTX) != 0) - in_libcall++; - else if (find_reg_note (insn, REG_RETVAL, NULL_RTX) != 0) - in_libcall--; - /* Record whether this call created an edge. */ if (code == CALL_INSN) { @@ -538,7 +529,6 @@ find_basic_blocks_1 (f) rtx label_value_list = NULL_RTX; rtx head = NULL_RTX; rtx end = NULL_RTX; - int in_libcall = 0; /* We process the instructions in a slightly different way than we did previously. This is so that we see a NOTE_BASIC_BLOCK after we have @@ -671,9 +661,8 @@ find_basic_blocks_1 (f) call_has_abnormal_edge = 1; /* A basic block ends at a call that can either throw or - do a non-local goto. LIBCALLs must reside totally in one - basic block, so don't end a block after them. */ - if (call_has_abnormal_edge && in_libcall == 0) + do a non-local goto. */ + if (call_has_abnormal_edge) { new_bb_inclusive: if (head == NULL_RTX) @@ -713,27 +702,21 @@ find_basic_blocks_1 (f) we know isn't part of any otherwise visible control flow. */ for (note = REG_NOTES (insn); note; note = XEXP (note, 1)) - { - if (REG_NOTE_KIND (note) == REG_LABEL) - { - rtx lab = XEXP (note, 0), next; + if (REG_NOTE_KIND (note) == REG_LABEL) + { + rtx lab = XEXP (note, 0), next; - if (lab == eh_return_stub_label) - ; - else if ((next = next_nonnote_insn (lab)) != NULL - && GET_CODE (next) == JUMP_INSN - && (GET_CODE (PATTERN (next)) == ADDR_VEC - || GET_CODE (PATTERN (next)) == ADDR_DIFF_VEC)) + if (lab == eh_return_stub_label) ; - else - label_value_list - = alloc_EXPR_LIST (0, XEXP (note, 0), label_value_list); - } - else if (REG_NOTE_KIND (note) == REG_LIBCALL) - in_libcall++; - else if (REG_NOTE_KIND (note) == REG_RETVAL) - in_libcall--; - } + else if ((next = next_nonnote_insn (lab)) != NULL + && GET_CODE (next) == JUMP_INSN + && (GET_CODE (PATTERN (next)) == ADDR_VEC + || GET_CODE (PATTERN (next)) == ADDR_DIFF_VEC)) + ; + else + label_value_list + = alloc_EXPR_LIST (0, XEXP (note, 0), label_value_list); + } } } |