* config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
* config/mep/mep.md (sibcall_internal): Change test from
mep_vliw_mode_match to mep_vliw_jmp_match.
(sibcall_value_internal): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149644
138bc75d-0d04-0410-961f-
82ee72b054a4
+2009-07-14 DJ Delorie <dj@redhat.com>
+
+ * config/mep/mep.c (mep_vliw_jmp_match): New function.
+ * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
+ * config/mep/mep.md (sibcall_internal): Change test from
+ mep_vliw_mode_match to mep_vliw_jmp_match.
+ (sibcall_value_internal): Likewise.
+
2009-07-14 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sse.md (copysign<mode>3): New expander.
extern bool mep_bit_position_p (rtx, bool);
extern bool mep_split_mov (rtx *, int);
extern bool mep_vliw_mode_match (rtx);
+extern bool mep_vliw_jmp_match (rtx);
extern bool mep_multi_slot (rtx);
extern bool mep_legitimate_address (enum machine_mode, rtx, int);
extern int mep_legitimize_address (rtx *, rtx, enum machine_mode);
return src_vliw == tgt_vliw;
}
+/* Like the above, but also test for near/far mismatches. */
+
+bool
+mep_vliw_jmp_match (rtx tgt)
+{
+ bool src_vliw = mep_vliw_function_p (cfun->decl);
+ bool tgt_vliw = INTVAL (tgt);
+
+ if (mep_section_tag (DECL_RTL (cfun->decl)) == 'f')
+ return false;
+
+ return src_vliw == tgt_vliw;
+}
+
bool
mep_multi_slot (rtx x)
{
]
"SIBLING_CALL_P (insn)"
{
- if (mep_vliw_mode_match (operands[2]))
+ if (mep_vliw_jmp_match (operands[2]))
return "jmp\t%0";
else
return
]
"SIBLING_CALL_P (insn)"
{
- if (mep_vliw_mode_match (operands[3]))
+ if (mep_vliw_jmp_match (operands[3]))
return "jmp\t%1";
else
return