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
This commit is contained in:
parent
474d486a73
commit
fa967f341c
@ -1,3 +1,14 @@
|
||||
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>
|
||||
|
||||
* 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)
|
||||
free (end);
|
||||
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. */
|
||||
|
12
gcc/except.c
12
gcc/except.c
@ -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
|
||||
&& (cgraph_function_body_availability (cgraph_get_node
|
||||
(current_function_decl))
|
||||
|
21
gcc/final.c
21
gcc/final.c
@ -4083,7 +4083,6 @@ int
|
||||
leaf_function_p (void)
|
||||
{
|
||||
rtx insn;
|
||||
rtx link;
|
||||
|
||||
if (crtl->profile || profile_arc_flag)
|
||||
return 0;
|
||||
@ -4099,21 +4098,6 @@ leaf_function_p (void)
|
||||
&& ! SIBLING_CALL_P (XVECEXP (PATTERN (insn), 0, 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;
|
||||
}
|
||||
@ -4183,11 +4167,6 @@ leaf_renumber_regs (rtx first)
|
||||
for (insn = first; insn; insn = NEXT_INSN (insn))
|
||||
if (INSN_P (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
|
||||
|
@ -341,10 +341,6 @@ struct GTY(()) rtl_data {
|
||||
|
||||
/* 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
|
||||
builtin_frame_address with nonzero count. */
|
||||
bool accesses_prior_frames;
|
||||
|
10
gcc/reorg.c
10
gcc/reorg.c
@ -435,12 +435,7 @@ find_end_label (rtx kind)
|
||||
if needed. */
|
||||
emit_label (label);
|
||||
#ifdef HAVE_return
|
||||
/* We don't bother trying to create a return insn if the
|
||||
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)
|
||||
if (HAVE_return)
|
||||
{
|
||||
/* The return we make may have delay slots too. */
|
||||
rtx insn = gen_return ();
|
||||
@ -804,8 +799,7 @@ optimize_skip (rtx insn)
|
||||
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
|
||||
slot give the same effect in fewer insns. */
|
||||
if ((next_trial == next_active_insn (JUMP_LABEL (insn))
|
||||
&& ! (next_trial == 0 && crtl->epilogue_delay_list != 0))
|
||||
if (next_trial == next_active_insn (JUMP_LABEL (insn))
|
||||
|| (next_trial != 0
|
||||
&& simplejump_or_return_p (next_trial)
|
||||
&& JUMP_LABEL (insn) == JUMP_LABEL (next_trial)))
|
||||
|
@ -3822,18 +3822,13 @@ mark_constants (rtx insn)
|
||||
static void
|
||||
mark_constant_pool (void)
|
||||
{
|
||||
rtx insn, link;
|
||||
rtx insn;
|
||||
|
||||
if (!crtl->uses_const_pool && n_deferred_constants == 0)
|
||||
return;
|
||||
|
||||
for (insn = get_insns (); insn; insn = NEXT_INSN (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. */
|
||||
|
Loading…
Reference in New Issue
Block a user