summaryrefslogtreecommitdiff
path: root/gcc/reorg.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2015-06-25 17:18:12 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2015-06-25 17:18:12 +0000
commit4bccb39ebaecc3c91ea8aee58dc0c71d5a7e3b95 (patch)
treed4c2043c4d2fe1765f3dec6cc791fa7b0f3a1899 /gcc/reorg.c
parentd58627a0c75748b24e1c182d0c4cc1d5136cb42c (diff)
Makefile.in (TARGET_DEF): Add target-insns.def.
gcc/ * Makefile.in (TARGET_DEF): Add target-insns.def. (.PRECIOUS, simple_rtl_generated_h): Add insn-target-def.h. (build/gentarget-def.o): New rule. (genprogrtl): Add target-def. * target-insns.def, gentarget-def.c: New files. * target.def: Add targetm.have_* and targetm.gen_* hooks, based on the contents of target-insns.def. * defaults.h (HAVE_simple_return, gen_simple_return): Delete. (HAVE_return, gen_return): Delete. * target-def.h: Include insn-target-def.h. * cfgrtl.c (force_nonfallthru_and_redirect): Use targetm interface instead of direct calls. Rely on them to do the appropriate assertions. * function.c (gen_return_pattern): Likewise. Return an rtx_insn *. (convert_jumps_to_returns): Use targetm interface instead of direct calls. (thread_prologue_and_epilogue_insns): Likewise. * reorg.c (find_end_label, dbr_schedule): Likewise. * shrink-wrap.h (SHRINK_WRAPPING_ENABLED): Likewise. * shrink-wrap.c (convert_to_simple_return): Likewise. (try_shrink_wrapping): Use SHRINK_WRAPPING_ENABLED. From-SVN: r224979
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r--gcc/reorg.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 15f513cd3a7..b24a3f04388 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -473,7 +473,7 @@ find_end_label (rtx kind)
}
else
{
- if (HAVE_epilogue && ! HAVE_return)
+ if (HAVE_epilogue && ! targetm.have_return ())
/* The RETURN insn has its delay slot filled so we cannot
emit the label just before it. Since we already have
an epilogue and cannot emit a new RETURN, we cannot
@@ -483,10 +483,10 @@ find_end_label (rtx kind)
/* Otherwise, make a new label and emit a RETURN and BARRIER,
if needed. */
emit_label (label);
- if (HAVE_return)
+ if (targetm.have_return ())
{
/* The return we make may have delay slots too. */
- rtx pat = gen_return ();
+ rtx_insn *pat = targetm.gen_return ();
rtx_insn *insn = emit_jump_insn (pat);
set_return_jump_label (insn);
emit_barrier ();
@@ -3815,8 +3815,9 @@ dbr_schedule (rtx_insn *first)
delete_related_insns (function_simple_return_label);
need_return_insns = false;
- need_return_insns |= HAVE_return && function_return_label != 0;
- need_return_insns |= HAVE_simple_return && function_simple_return_label != 0;
+ need_return_insns |= targetm.have_return () && function_return_label != 0;
+ need_return_insns |= (targetm.have_simple_return ()
+ && function_simple_return_label != 0);
if (need_return_insns)
make_return_insns (first);