diff options
author | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-03 12:07:47 +0000 |
---|---|---|
committer | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-03 12:07:47 +0000 |
commit | fbac255ac3fa1a151e550cfaa835c561ec2cd280 (patch) | |
tree | a5c35a768c30f3209297293fe64b76eab30e93f8 /gcc/function.c | |
parent | 4a86305db2c1a8ee36f492c3ec2c31c770999dd6 (diff) | |
download | gcc-fbac255ac3fa1a151e550cfaa835c561ec2cd280.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82597 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 60 |
1 files changed, 3 insertions, 57 deletions
diff --git a/gcc/function.c b/gcc/function.c index 3744bf53ba2..69866f9812d 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -444,7 +444,6 @@ free_after_compilation (struct function *f) f->x_save_expr_regs = NULL; f->x_stack_slot_list = NULL; f->x_rtl_expr_chain = NULL; - f->x_tail_recursion_label = NULL; f->x_tail_recursion_reentry = NULL; f->x_arg_pointer_save_area = NULL; f->x_parm_birth_insn = NULL; @@ -1683,32 +1682,7 @@ fixup_var_refs_insns (rtx insn, rtx var, enum machine_mode promoted_mode, pointer now. */ rtx next = NEXT_INSN (insn); - /* CALL_PLACEHOLDERs are special; we have to switch into each of - the three sequences they (potentially) contain, and process - them recursively. The CALL_INSN itself is not interesting. */ - - if (GET_CODE (insn) == CALL_INSN - && GET_CODE (PATTERN (insn)) == CALL_PLACEHOLDER) - { - int i; - - /* Look at the Normal call, sibling call and tail recursion - sequences attached to the CALL_PLACEHOLDER. */ - for (i = 0; i < 3; i++) - { - rtx seq = XEXP (PATTERN (insn), i); - if (seq) - { - push_to_sequence (seq); - fixup_var_refs_insns (seq, var, promoted_mode, unsignedp, 0, - may_share); - XEXP (PATTERN (insn), i) = get_insns (); - end_sequence (); - } - } - } - - else if (INSN_P (insn)) + if (INSN_P (insn)) fixup_var_refs_insn (insn, var, promoted_mode, unsignedp, toplevel, may_share); @@ -1717,11 +1691,7 @@ fixup_var_refs_insns (rtx insn, rtx var, enum machine_mode promoted_mode, } /* Look up the insns which reference VAR in HT and fix them up. Other - arguments are the same as fixup_var_refs_insns. - - N.B. No need for special processing of CALL_PLACEHOLDERs here, - because the hash table will point straight to the interesting insn - (inside the CALL_PLACEHOLDER). */ + arguments are the same as fixup_var_refs_insns. */ static void fixup_var_refs_insns_with_hash (htab_t ht, rtx var, enum machine_mode promoted_mode, @@ -5903,7 +5873,7 @@ identify_blocks (void) } /* Subroutine of identify_blocks. Do the block substitution on the - insn chain beginning with INSNS. Recurse for CALL_PLACEHOLDER chains. + insn chain beginning with INSNS. BLOCK_STACK is pushed and popped for each BLOCK_BEGIN/BLOCK_END pair. BLOCK_VECTOR is incremented for each block seen. */ @@ -5942,20 +5912,6 @@ identify_blocks_1 (rtx insns, tree *block_vector, tree *end_block_vector, NOTE_BLOCK (insn) = *--block_stack; } } - else if (GET_CODE (insn) == CALL_INSN - && GET_CODE (PATTERN (insn)) == CALL_PLACEHOLDER) - { - rtx cp = PATTERN (insn); - - block_vector = identify_blocks_1 (XEXP (cp, 0), block_vector, - end_block_vector, block_stack); - if (XEXP (cp, 1)) - block_vector = identify_blocks_1 (XEXP (cp, 1), block_vector, - end_block_vector, block_stack); - if (XEXP (cp, 2)) - block_vector = identify_blocks_1 (XEXP (cp, 2), block_vector, - end_block_vector, block_stack); - } } /* If there are more NOTE_INSN_BLOCK_BEGINs than NOTE_INSN_BLOCK_ENDs, @@ -6066,16 +6022,6 @@ reorder_blocks_1 (rtx insns, tree current_block, varray_type *p_block_stack) current_block = BLOCK_SUPERCONTEXT (current_block); } } - else if (GET_CODE (insn) == CALL_INSN - && GET_CODE (PATTERN (insn)) == CALL_PLACEHOLDER) - { - rtx cp = PATTERN (insn); - reorder_blocks_1 (XEXP (cp, 0), current_block, p_block_stack); - if (XEXP (cp, 1)) - reorder_blocks_1 (XEXP (cp, 1), current_block, p_block_stack); - if (XEXP (cp, 2)) - reorder_blocks_1 (XEXP (cp, 2), current_block, p_block_stack); - } } } |