* config/mep/mep.c (mep_vliw_jmp_match): New function.
authordj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Jul 2009 21:46:15 +0000 (21:46 +0000)
committerdj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Jul 2009 21:46:15 +0000 (21:46 +0000)
* 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

gcc/ChangeLog
gcc/config/mep/mep-protos.h
gcc/config/mep/mep.c
gcc/config/mep/mep.md

index dc77e9d..66697c4 100644 (file)
@@ -1,3 +1,11 @@
+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.
index eb37702..a4de754 100644 (file)
@@ -33,6 +33,7 @@ extern bool mep_allow_clip (rtx, rtx, int);
 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);
index 9e63b4d..80d2018 100644 (file)
@@ -1182,6 +1182,20 @@ mep_vliw_mode_match (rtx tgt)
   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)
 {
index 2b6aa80..828c3c5 100644 (file)
   ]
   "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