OSDN Git Service

* config/mn10300/mn10300.md: (call_internal): Remove mode on
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Nov 2007 12:34:29 +0000 (12:34 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Nov 2007 12:34:29 +0000 (12:34 +0000)
  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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130437 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 76daadc..474e34c 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 6d68674..c9540b8 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;
 }
 ")