diff options
author | Steven Bosscher <stevenb@suse.de> | 2004-06-03 12:07:47 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2004-06-03 12:07:47 +0000 |
commit | 6ce2bcb71c2f66918a8287090589a9d9ea45ed74 (patch) | |
tree | a5c35a768c30f3209297293fe64b76eab30e93f8 /gcc/cfgbuild.c | |
parent | 53ef271f84dcf405c5e58ea7b1ef2211f073d3c1 (diff) | |
download | gcc-6ce2bcb71c2f66918a8287090589a9d9ea45ed74.tar.gz |
basic-block.c (tail_recursion_label_list): Don't declare.
* basic-block.c (tail_recursion_label_list): Don't declare.
(CLEANUP_PRE_SIBCALL): Remove. Renumber the other CLEANUP_*
accordingly.
* cfgbuild.c (find_label_refs): Remove.
(find_basic_blocks_1): Don't handle CALL_PLACEHOLDER insns.
* cfgcleanup.c (tail_recursion_label_p): Remove.
(merge_blocks_move): Do not check for tail recursion.
(try_optimize_cfg): Likewise.
(cleanup_cfg): Never handle CLEANUP_PRE_SIBCALL.
* cfgrtl.c (tail_recursion_label_list): Remove.
* except.c (remove_unreachable_regions): Don't handle
CALL_PLACEHOLDER insns.
(convert_from_eh_region_ranges_1, can_throw_internal,
can_throw_external): Likewise.
* function.c (free_after_compilation): Don't clear
x_tail_recursion_label.
(fixup_var_refs_insns): Don't handle CALL_PLACEHOLDER insns.
(identify_blocks_1): Don't recurse for CALL_PLACEHOLDER insns.
(reorder_blocks_1): Likewise.
* function.h (struct function): Remove x_tail_recursion_label
member. Don't define tail_recursion_label.
* jump.c (mark_all_labels): Don't handle CALL_PLACEHOLDER insns.
* print-rtl.c (print_rtx): Likewise.
* rtl.def (CALL_PLACEHOLDER): Remove.
* rtl.h (sibcall_use_t): Remove enum.
(optimize_sibling_and_tail_recursive_calls,
replace_call_placeholder): Remove function prototypes.
* stmt.c (tail_recursion_args): Remove.
(optimize_tail_recursion): Remove.
(expand_return): Don't check for possible tail recursion.
* tree.h (optimize_tail_recursion): Remove prototype.
From-SVN: r82597
Diffstat (limited to 'gcc/cfgbuild.c')
-rw-r--r-- | gcc/cfgbuild.c | 62 |
1 files changed, 1 insertions, 61 deletions
diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c index e184479cd16..0cef94eafd3 100644 --- a/gcc/cfgbuild.c +++ b/gcc/cfgbuild.c @@ -50,7 +50,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA static int count_basic_blocks (rtx); static void find_basic_blocks_1 (rtx); -static rtx find_label_refs (rtx, rtx); static void make_edges (rtx, basic_block, basic_block, int); static void make_label_edge (sbitmap *, basic_block, rtx, int); static void find_bb_boundaries (basic_block); @@ -175,51 +174,6 @@ count_basic_blocks (rtx f) return count; } - -/* Scan a list of insns for labels referred to other than by jumps. - This is used to scan the alternatives of a call placeholder. */ - -static rtx -find_label_refs (rtx f, rtx lvl) -{ - rtx insn; - - for (insn = f; insn; insn = NEXT_INSN (insn)) - if (INSN_P (insn) && GET_CODE (insn) != JUMP_INSN) - { - rtx note; - - /* Make a list of all labels referred to other than by jumps - (which just don't have the REG_LABEL notes). - - Make a special exception for labels followed by an ADDR*VEC, - as this would be a part of the tablejump setup code. - - Make a special exception to registers loaded with label - values just before jump insns that use them. */ - - for (note = REG_NOTES (insn); note; note = XEXP (note, 1)) - if (REG_NOTE_KIND (note) == REG_LABEL) - { - rtx lab = XEXP (note, 0), next; - - 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 if (GET_CODE (lab) == NOTE) - ; - else if (GET_CODE (NEXT_INSN (insn)) == JUMP_INSN - && find_reg_note (NEXT_INSN (insn), REG_LABEL, lab)) - ; - else - lvl = alloc_EXPR_LIST (0, XEXP (note, 0), lvl); - } - } - - return lvl; -} /* Create an edge between two basic blocks. FLAGS are auxiliary information about the edge that is accumulated between calls. */ @@ -464,7 +418,6 @@ find_basic_blocks_1 (rtx f) rtx insn, next; rtx bb_note = NULL_RTX; rtx lvl = NULL_RTX; - rtx trll = NULL_RTX; rtx head = NULL_RTX; rtx end = NULL_RTX; basic_block prev = ENTRY_BLOCK_PTR; @@ -525,23 +478,11 @@ find_basic_blocks_1 (rtx f) case CODE_LABEL: case JUMP_INSN: + case CALL_INSN: case INSN: case BARRIER: break; - case CALL_INSN: - if (GET_CODE (PATTERN (insn)) == CALL_PLACEHOLDER) - { - /* Scan each of the alternatives for label refs. */ - lvl = find_label_refs (XEXP (PATTERN (insn), 0), lvl); - lvl = find_label_refs (XEXP (PATTERN (insn), 1), lvl); - lvl = find_label_refs (XEXP (PATTERN (insn), 2), lvl); - /* Record its tail recursion label, if any. */ - if (XEXP (PATTERN (insn), 3) != NULL_RTX) - trll = alloc_EXPR_LIST (0, XEXP (PATTERN (insn), 3), trll); - } - break; - default: abort (); } @@ -588,7 +529,6 @@ find_basic_blocks_1 (rtx f) abort (); label_value_list = lvl; - tail_recursion_label_list = trll; clear_aux_for_blocks (); } |