Commit fa967f34 by Steven Bosscher

function.h (struct rtl_data): Remove epilogue_delay_list.

	* function.h (struct rtl_data): Remove epilogue_delay_list.
	* reorg.c (find_end_label): Simplify always-true test.
	(optimize_skip): Likewise.
	* final.c (leaf_function_p): Don't loop over epilogue_delay_list.
	(leaf_renumber_regs): Likewise.
	* varasm.c (mark_constant_pool): Likewise.
	* except.c (set_nothrow_function_flags): Likewise.
	* cfgrtl.c (print_rtl_with_bb): Likewise.

From-SVN: r194053
parent 474d486a
2012-12-02 Steven Bosscher <steven@gcc.gnu.org>
* function.h (struct rtl_data): Remove epilogue_delay_list.
* reorg.c (find_end_label): Simplify always-true test.
(optimize_skip): Likewise.
* final.c (leaf_function_p): Don't loop over epilogue_delay_list.
(leaf_renumber_regs): Likewise.
* varasm.c (mark_constant_pool): Likewise.
* except.c (set_nothrow_function_flags): Likewise.
* cfgrtl.c (print_rtl_with_bb): Likewise.
2012-12-02 Hans-Peter Nilsson <hp@bitrange.com> 2012-12-02 Hans-Peter Nilsson <hp@bitrange.com>
* config/mmix/mmix.c (mmix_function_value): Set the mode of the * config/mmix/mmix.c (mmix_function_value): Set the mode of the
...@@ -2015,14 +2015,6 @@ print_rtl_with_bb (FILE *outf, const_rtx rtx_first, int flags) ...@@ -2015,14 +2015,6 @@ print_rtl_with_bb (FILE *outf, const_rtx rtx_first, int flags)
free (end); free (end);
free (in_bb_p); free (in_bb_p);
} }
if (crtl->epilogue_delay_list != 0)
{
fprintf (outf, "\n;; Insns in epilogue delay list:\n\n");
for (tmp_rtx = crtl->epilogue_delay_list; tmp_rtx != 0;
tmp_rtx = XEXP (tmp_rtx, 1))
print_rtl_single (outf, XEXP (tmp_rtx, 0));
}
} }
/* Update the branch probability of BB if a REG_BR_PROB is present. */ /* Update the branch probability of BB if a REG_BR_PROB is present. */
......
...@@ -1884,18 +1884,6 @@ set_nothrow_function_flags (void) ...@@ -1884,18 +1884,6 @@ set_nothrow_function_flags (void)
} }
} }
for (insn = crtl->epilogue_delay_list; insn;
insn = XEXP (insn, 1))
if (can_throw_external (insn))
{
crtl->nothrow = 0;
if (!CALL_P (insn) || !SIBLING_CALL_P (insn))
{
crtl->all_throwers_are_sibcalls = 0;
return 0;
}
}
if (crtl->nothrow if (crtl->nothrow
&& (cgraph_function_body_availability (cgraph_get_node && (cgraph_function_body_availability (cgraph_get_node
(current_function_decl)) (current_function_decl))
......
...@@ -4083,7 +4083,6 @@ int ...@@ -4083,7 +4083,6 @@ int
leaf_function_p (void) leaf_function_p (void)
{ {
rtx insn; rtx insn;
rtx link;
if (crtl->profile || profile_arc_flag) if (crtl->profile || profile_arc_flag)
return 0; return 0;
...@@ -4099,21 +4098,6 @@ leaf_function_p (void) ...@@ -4099,21 +4098,6 @@ leaf_function_p (void)
&& ! SIBLING_CALL_P (XVECEXP (PATTERN (insn), 0, 0))) && ! SIBLING_CALL_P (XVECEXP (PATTERN (insn), 0, 0)))
return 0; return 0;
} }
for (link = crtl->epilogue_delay_list;
link;
link = XEXP (link, 1))
{
insn = XEXP (link, 0);
if (CALL_P (insn)
&& ! SIBLING_CALL_P (insn))
return 0;
if (NONJUMP_INSN_P (insn)
&& GET_CODE (PATTERN (insn)) == SEQUENCE
&& CALL_P (XVECEXP (PATTERN (insn), 0, 0))
&& ! SIBLING_CALL_P (XVECEXP (PATTERN (insn), 0, 0)))
return 0;
}
return 1; return 1;
} }
...@@ -4183,11 +4167,6 @@ leaf_renumber_regs (rtx first) ...@@ -4183,11 +4167,6 @@ leaf_renumber_regs (rtx first)
for (insn = first; insn; insn = NEXT_INSN (insn)) for (insn = first; insn; insn = NEXT_INSN (insn))
if (INSN_P (insn)) if (INSN_P (insn))
leaf_renumber_regs_insn (PATTERN (insn)); leaf_renumber_regs_insn (PATTERN (insn));
for (insn = crtl->epilogue_delay_list;
insn;
insn = XEXP (insn, 1))
if (INSN_P (XEXP (insn, 0)))
leaf_renumber_regs_insn (PATTERN (XEXP (insn, 0)));
} }
/* Scan IN_RTX and its subexpressions, and renumber all regs into those /* Scan IN_RTX and its subexpressions, and renumber all regs into those
......
...@@ -341,10 +341,6 @@ struct GTY(()) rtl_data { ...@@ -341,10 +341,6 @@ struct GTY(()) rtl_data {
/* For reorg. */ /* For reorg. */
/* If some insns can be deferred to the delay slots of the epilogue, the
delay list for them is recorded here. */
rtx epilogue_delay_list;
/* Nonzero if function being compiled called builtin_return_addr or /* Nonzero if function being compiled called builtin_return_addr or
builtin_frame_address with nonzero count. */ builtin_frame_address with nonzero count. */
bool accesses_prior_frames; bool accesses_prior_frames;
......
...@@ -435,12 +435,7 @@ find_end_label (rtx kind) ...@@ -435,12 +435,7 @@ find_end_label (rtx kind)
if needed. */ if needed. */
emit_label (label); emit_label (label);
#ifdef HAVE_return #ifdef HAVE_return
/* We don't bother trying to create a return insn if the if (HAVE_return)
epilogue has filled delay-slots; we would have to try and
move the delay-slot fillers to the delay-slots for the new
return insn or in front of the new return insn. */
if (crtl->epilogue_delay_list == NULL
&& HAVE_return)
{ {
/* The return we make may have delay slots too. */ /* The return we make may have delay slots too. */
rtx insn = gen_return (); rtx insn = gen_return ();
...@@ -804,8 +799,7 @@ optimize_skip (rtx insn) ...@@ -804,8 +799,7 @@ optimize_skip (rtx insn)
we have one insn followed by a branch to the same label we branch to. we have one insn followed by a branch to the same label we branch to.
In both of these cases, inverting the jump and annulling the delay In both of these cases, inverting the jump and annulling the delay
slot give the same effect in fewer insns. */ slot give the same effect in fewer insns. */
if ((next_trial == next_active_insn (JUMP_LABEL (insn)) if (next_trial == next_active_insn (JUMP_LABEL (insn))
&& ! (next_trial == 0 && crtl->epilogue_delay_list != 0))
|| (next_trial != 0 || (next_trial != 0
&& simplejump_or_return_p (next_trial) && simplejump_or_return_p (next_trial)
&& JUMP_LABEL (insn) == JUMP_LABEL (next_trial))) && JUMP_LABEL (insn) == JUMP_LABEL (next_trial)))
......
...@@ -3822,18 +3822,13 @@ mark_constants (rtx insn) ...@@ -3822,18 +3822,13 @@ mark_constants (rtx insn)
static void static void
mark_constant_pool (void) mark_constant_pool (void)
{ {
rtx insn, link; rtx insn;
if (!crtl->uses_const_pool && n_deferred_constants == 0) if (!crtl->uses_const_pool && n_deferred_constants == 0)
return; return;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
mark_constants (insn); mark_constants (insn);
for (link = crtl->epilogue_delay_list;
link;
link = XEXP (link, 1))
mark_constants (XEXP (link, 0));
} }
/* Write all the constants in POOL. */ /* Write all the constants in POOL. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment