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 + + * 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 * 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. */