summaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2015-06-30 20:55:13 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2015-06-30 20:55:13 +0000
commitcf3a33c871e183d9bf07efb3015bf5583ef9f482 (patch)
tree2193da8de1f51038b6a2aaffb584896891556546 /gcc/function.c
parenta24ef8d231d1015c5a4ee68050ed78f5582342fe (diff)
downloadgcc-cf3a33c871e183d9bf07efb3015bf5583ef9f482.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@225208 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/gcc/function.c b/gcc/function.c
index de0b38fe52a..8134c4e7067 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. */