Commit 90262804 by Richard Sandiford Committed by Richard Sandiford

target-insns.def (indirect_jump): New targetm instruction pattern.

gcc/
	* target-insns.def (indirect_jump): New targetm instruction pattern.
	* optabs.c (emit_indirect_jump): Use it instead of HAVE_*/gen_*
	interface.

From-SVN: r226321
parent c1ddc8e9
2015-07-28 Richard Sandiford <richard.sandiford@arm.com>
* target-insns.def (indirect_jump): New targetm instruction pattern.
* optabs.c (emit_indirect_jump): Use it instead of HAVE_*/gen_*
interface.
2015-07-28 Richard Sandiford <richard.sandiford@arm.com>
* config/fr30/fr30.md (indirect_jump): Use pmode_register_operand
instead of nonimmediate_operand. Remove C condiition.
......
......@@ -4484,16 +4484,15 @@ prepare_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison,
/* Generate code to indirectly jump to a location given in the rtx LOC. */
void
emit_indirect_jump (rtx loc ATTRIBUTE_UNUSED)
emit_indirect_jump (rtx loc)
{
#ifndef HAVE_indirect_jump
sorry ("indirect jumps are not available on this target");
#else
if (!targetm.have_indirect_jump ())
sorry ("indirect jumps are not available on this target");
struct expand_operand ops[1];
create_address_operand (&ops[0], loc);
expand_jump_insn (CODE_FOR_indirect_jump, 1, ops);
expand_jump_insn (targetm.code_for_indirect_jump, 1, ops);
emit_barrier ();
#endif
}
......
......@@ -44,6 +44,7 @@ DEF_TARGET_INSN (epilogue, (void))
DEF_TARGET_INSN (exception_receiver, (void))
DEF_TARGET_INSN (extv, (rtx x0, rtx x1, rtx x2, rtx x3))
DEF_TARGET_INSN (extzv, (rtx x0, rtx x1, rtx x2, rtx x3))
DEF_TARGET_INSN (indirect_jump, (rtx x0))
DEF_TARGET_INSN (insv, (rtx x0, rtx x1, rtx x2, rtx x3))
DEF_TARGET_INSN (jump, (rtx x0))
DEF_TARGET_INSN (load_multiple, (rtx x0, rtx x1, rtx x2))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment