]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
mn10300.md: (call_internal): Remove mode on operand 0 in order to match UNPSEC'ed...
authorNick Clifton <nickc@redhat.com>
Mon, 26 Nov 2007 12:34:29 +0000 (12:34 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Mon, 26 Nov 2007 12:34:29 +0000 (12:34 +0000)
* config/mn10300/mn10300.md: (call_internal): Remove mode on
  operand 0 in order to match UNPSEC'ed calls generated in PIC mode.
  (call_value_internal): Remove mode on operands 0 and 1 in order to
  match UNPSEC'ed calls generated in PIC mode.
  (GOTaddr2picreg): Use copy_rtx to prevent sharing an rtx between
  two insns.

From-SVN: r130437

gcc/ChangeLog
gcc/config/mn10300/mn10300.md

index 76daadca1158266635f2cd5f40c2852d60063042..474e34c21421d5df00012bc9a473672545723d85 100644 (file)
@@ -1,3 +1,12 @@
+2007-11-26  Nick Clifton  <nickc@redhat.com>
+
+       * config/mn10300/mn10300.md: (call_internal): Remove mode on
+       operand 0 in order to match UNPSEC'ed calls generated in PIC mode.
+        (call_value_internal): Remove mode on operands 0 and 1 in order to
+       match UNPSEC'ed calls generated in PIC mode.
+        (GOTaddr2picreg): Use copy_rtx to prevent sharing an rtx between
+       two insns.
+
 2007-11-26  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/34233
index 6d686743bc28167ae98fb6ec48e01c9c9650edb5..c9540b8e9feb303d4665168f9f2a1203646dc0fb 100644 (file)
   DONE;
 }")
 
+;; NB: Mode on match_operand 0 deliberately omitted in
+;;     order to be able to match UNSPECs in PIC mode.
 (define_insn "call_internal"
-  [(call (mem:QI (match_operand:SI 0 "call_address_operand" "aS"))
+  [(call (mem:QI (match_operand 0 "call_address_operand" "aS"))
         (match_operand:SI 1 "general_operand" "g"))]
   ""
   "*
   DONE;
 }")
 
+;; NB: Mode on match_operands 0 and 1 deliberately omitted
+;;     in order to be able to match UNSPECs in PIC mode.
 (define_insn "call_value_internal"
-  [(set (match_operand 0 "" "=dax")
-       (call (mem:QI (match_operand:SI 1 "call_address_operand" "aS"))
-             (match_operand:SI 2 "general_operand" "g")))]
+  [(set (match_operand               0 "register_operand" "=dax")
+       (call (mem:QI (match_operand 1 "call_address_operand" "aS"))
+             (match_operand:SI      2 "general_operand" "g")))]
   ""
   "*
 {
     emit_insn (gen_am33_loadPC (operands[0]));
   else
     emit_insn (gen_mn10300_loadPC (operands[0]));
-  emit_insn (gen_add_GOT_to_pic_reg (operands[0]));
+  emit_insn (gen_add_GOT_to_pic_reg (copy_rtx (operands[0])));
   DONE;
 }
 ")