diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2015-06-25 17:18:12 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2015-06-25 17:18:12 +0000 |
commit | 4bccb39ebaecc3c91ea8aee58dc0c71d5a7e3b95 (patch) | |
tree | d4c2043c4d2fe1765f3dec6cc791fa7b0f3a1899 /gcc/reorg.c | |
parent | d58627a0c75748b24e1c182d0c4cc1d5136cb42c (diff) | |
download | gcc-4bccb39ebaecc3c91ea8aee58dc0c71d5a7e3b95.zip gcc-4bccb39ebaecc3c91ea8aee58dc0c71d5a7e3b95.tar.gz gcc-4bccb39ebaecc3c91ea8aee58dc0c71d5a7e3b95.tar.bz2 |
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.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c index 15f513c..b24a3f0 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); |