summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/cfgrtl.c8
-rw-r--r--gcc/except.c12
-rw-r--r--gcc/final.c21
-rw-r--r--gcc/function.h4
-rw-r--r--gcc/reorg.c10
-rw-r--r--gcc/varasm.c7
7 files changed, 14 insertions, 59 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 398c2f042bf..4b6c703b848 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 197f8718116..386dedefd4b 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -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. */
diff --git a/gcc/except.c b/gcc/except.c
index 287b75bc975..1f7b7f3f7fb 100644
--- a/gcc/except.c
+++ b/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))
diff --git a/gcc/final.c b/gcc/final.c
index 2bd6aebe4bc..234376d40f6 100644
--- a/gcc/final.c
+++ b/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
diff --git a/gcc/function.h b/gcc/function.h
index 63704d4fb09..dd7f099e8a5 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -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;
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 612c9cae93b..f92998ed4a8 100644
--- a/gcc/reorg.c
+++ b/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)))
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 4c98f865923..ee42afc8cbd 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -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. */