diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2015-06-30 20:55:13 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2015-06-30 20:55:13 +0000 |
commit | e86a994681b0cad81ea13d29d9ab5f65d40ccc63 (patch) | |
tree | 2193da8de1f51038b6a2aaffb584896891556546 /gcc/function.c | |
parent | ec5d0088148d1d6218f5f503d1c8e67a529dfacd (diff) | |
download | gcc-e86a994681b0cad81ea13d29d9ab5f65d40ccc63.zip gcc-e86a994681b0cad81ea13d29d9ab5f65d40ccc63.tar.gz gcc-e86a994681b0cad81ea13d29d9ab5f65d40ccc63.tar.bz2 |
defaults.h (HAVE_epilogue, [...]): Delete.
gcc/
* defaults.h (HAVE_epilogue, gen_epilogue): Delete.
* target-insns.def (epilogue, prologue, sibcall_prologue): New
targetm instruction patterns.
* alias.c (init_alias_analysis): Use them instead of HAVE_*/gen_*
interface.
* calls.c (expand_call): Likewise.
* cfgrtl.c (cfg_layout_finalize): Likewise.
* df-scan.c (df_get_entry_block_def_set): Likewise.
(df_get_exit_block_use_set): Likewise.
* dwarf2cfi.c (pass_dwarf2_frame::gate): Likewise.
* final.c (final_start_function): Likewise.
* function.c (thread_prologue_and_epilogue_insns): Likewise.
(reposition_prologue_and_epilogue_notes): Likewise.
* reorg.c (find_end_label): Likewise.
* toplev.c (process_options): Likewise.
From-SVN: r225208
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. */ |