Dont allow unsupported target rtx into call_internal1
authorEdgar E. Iglesias <edgar.iglesias@gmail.com>
Mon, 4 Mar 2013 15:26:59 +0000 (15:26 +0000)
committerMichael Eager <eager@gcc.gnu.org>
Mon, 4 Mar 2013 15:26:59 +0000 (15:26 +0000)
  * config/microblaze/predicates.md (call_insn_simple_operand):
     New predicate for supported rtx code types.
  * config/microblaze/microblaze.md (call_internal1): Use
     call_insn_simple_operand predicate.

From-SVN: r196433

gcc/ChangeLog
gcc/config/microblaze/microblaze.md
gcc/config/microblaze/predicates.md

index 206908daf227570ddf194e544dd6e8619e47c653..8bca611a97b067083693d9e9144b4f18539d2afb 100644 (file)
@@ -1,3 +1,10 @@
+2013-03-04  Edgar E. Iglesias <edgar.iglesias@gmail.com>
+
+       *  config/microblaze/predicates.md (call_insn_simple_operand):
+       New predicate for supported rtx code types.
+       *  config/microblaze/microblaze.md (call_internal1): Use
+       call_insn_simple_operand predicate.
+
 2013-03-04  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/56461
index 9f177331389af910c88781dcc83b6bef0eb17eeb..78c033ee2f6f3ec6d0f91aa1676255d2eb0647ac 100644 (file)
   (set_attr "length"   "4")])
 
 (define_insn "call_internal1"
-  [(call (mem (match_operand:SI 0 "call_insn_operand" "ri"))
+  [(call (mem (match_operand:SI 0 "call_insn_simple_operand" "ri"))
         (match_operand:SI 1 "" "i"))
   (clobber (reg:SI R_SR))]
   ""
index 9bf98101d9b80f5b8ac9f76b301f84804258e402..e6e998360248ae2cc4424f30830cf4e72cd1331c 100644 (file)
 (define_predicate "call_insn_operand"
   (match_test "CALL_INSN_OP (op)"))
 
+(define_predicate "call_insn_simple_operand"
+  (and (match_test "CALL_INSN_OP (op)")
+       (match_test "GET_CODE (op) == REG || GET_CODE (op) == SYMBOL_REF || GET_CODE (op) == CONST_INT")))
+
 ;; Return if OPERAND is valid as a source operand for a move instruction.
 (define_predicate "move_operand"
   (and (