summaryrefslogtreecommitdiff
path: root/gcc/cfgbuild.c
diff options
context:
space:
mode:
authorSteven Bosscher <stevenb@suse.de>2004-06-03 12:07:47 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2004-06-03 12:07:47 +0000
commit6ce2bcb71c2f66918a8287090589a9d9ea45ed74 (patch)
treea5c35a768c30f3209297293fe64b76eab30e93f8 /gcc/cfgbuild.c
parent53ef271f84dcf405c5e58ea7b1ef2211f073d3c1 (diff)
downloadgcc-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.c62
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 ();
}