diff options
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/gcc/function.c b/gcc/function.c index de0b38f..8134c4e 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5864,11 +5864,10 @@ thread_prologue_and_epilogue_insns (void) } prologue_seq = NULL; -#ifdef HAVE_prologue - if (HAVE_prologue) + if (targetm.have_prologue ()) { start_sequence (); - rtx_insn *seq = safe_as_a <rtx_insn *> (gen_prologue ()); + rtx_insn *seq = targetm.gen_prologue (); emit_insn (seq); /* Insert an explicit USE for the frame pointer @@ -5890,7 +5889,6 @@ thread_prologue_and_epilogue_insns (void) end_sequence (); set_insn_locations (prologue_seq, prologue_location); } -#endif bitmap_initialize (&bb_flags, &bitmap_default_obstack); @@ -5995,11 +5993,11 @@ thread_prologue_and_epilogue_insns (void) if (exit_fallthru_edge == NULL) goto epilogue_done; - if (HAVE_epilogue) + if (targetm.have_epilogue ()) { start_sequence (); epilogue_end = emit_note (NOTE_INSN_EPILOGUE_BEG); - rtx_insn *seq = as_a <rtx_insn *> (gen_epilogue ()); + rtx_insn *seq = targetm.gen_epilogue (); if (seq) emit_jump_insn (seq); @@ -6070,7 +6068,6 @@ epilogue_done: convert_to_simple_return (entry_edge, orig_entry_edge, bb_flags, returnjump, unconverted_simple_returns); -#ifdef HAVE_sibcall_epilogue /* Emit sibling epilogues before any sibling call sites. */ for (ei = ei_start (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds); (e = ei_safe_edge (ei)); @@ -6078,7 +6075,6 @@ epilogue_done: { basic_block bb = e->src; rtx_insn *insn = BB_END (bb); - rtx ep_seq; if (!CALL_P (insn) || ! SIBLING_CALL_P (insn) @@ -6090,8 +6086,7 @@ epilogue_done: continue; } - ep_seq = gen_sibcall_epilogue (); - if (ep_seq) + if (rtx_insn *ep_seq = targetm.gen_sibcall_epilogue ()) { start_sequence (); emit_note (NOTE_INSN_EPILOGUE_BEG); @@ -6109,7 +6104,6 @@ epilogue_done: } ei_next (&ei); } -#endif if (epilogue_end) { @@ -6143,10 +6137,10 @@ epilogue_done: void reposition_prologue_and_epilogue_notes (void) { -#if ! defined (HAVE_prologue) && ! defined (HAVE_sibcall_epilogue) - if (!HAVE_epilogue) + if (!targetm.have_prologue () + && !targetm.have_epilogue () + && !targetm.have_sibcall_epilogue ()) return; -#endif /* Since the hash table is created on demand, the fact that it is non-null is a signal that it is non-empty. */ |