rs6000: Fix "missing mode" on UNSPEC_TOCSLOT
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 19 Oct 2017 10:55:51 +0000 (12:55 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 19 Oct 2017 10:55:51 +0000 (12:55 +0200)
Currently gen* warn about a missing mode on an UNSPEC_TOCSLOT unspec in
some call patterns.  Those unspecs are created from rs6000.c, with Pmode
always.  This patch fixes the patterns to say :P as well.

* config/rs6000/rs6000.md (*call_indirect_aix<mode>,
*call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
*call_value_indirect_elfv2<mode>): Add correct mode to the unspec.

From-SVN: r253885

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index b7f4e4e071cdabf8dd0e7f1b1f77427013c59d1b..189fe05afaba29d4b02fd1cc29773b118b4c04a0 100644 (file)
@@ -1,3 +1,9 @@
+2017-10-19  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/rs6000.md (*call_indirect_aix<mode>,
+       *call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
+       *call_value_indirect_elfv2<mode>): Add correct mode to the unspec.
+
 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/82580
index aad382ced33039d678b6bbec34c4d89457bc5321..62bd19b19c5130f57d7a0e75d45b7551e95c822a 100644 (file)
   [(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
         (match_operand 1 "" "g,g"))
    (use (match_operand:P 2 "memory_operand" "<ptrm>,<ptrm>"))
-   (set (reg:P TOC_REGNUM) (unspec [(match_operand:P 3 "const_int_operand" "n,n")] UNSPEC_TOCSLOT))
+   (set (reg:P TOC_REGNUM) (unspec:P [(match_operand:P 3 "const_int_operand" "n,n")] UNSPEC_TOCSLOT))
    (clobber (reg:P LR_REGNO))]
   "DEFAULT_ABI == ABI_AIX"
   "<ptrload> 2,%2\;b%T0l\;<ptrload> 2,%3(1)"
        (call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
              (match_operand 2 "" "g,g")))
    (use (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
-   (set (reg:P TOC_REGNUM) (unspec [(match_operand:P 4 "const_int_operand" "n,n")] UNSPEC_TOCSLOT))
+   (set (reg:P TOC_REGNUM) (unspec:P [(match_operand:P 4 "const_int_operand" "n,n")] UNSPEC_TOCSLOT))
    (clobber (reg:P LR_REGNO))]
   "DEFAULT_ABI == ABI_AIX"
   "<ptrload> 2,%3\;b%T1l\;<ptrload> 2,%4(1)"
 (define_insn "*call_indirect_elfv2<mode>"
   [(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
         (match_operand 1 "" "g,g"))
-   (set (reg:P TOC_REGNUM) (unspec [(match_operand:P 2 "const_int_operand" "n,n")] UNSPEC_TOCSLOT))
+   (set (reg:P TOC_REGNUM) (unspec:P [(match_operand:P 2 "const_int_operand" "n,n")] UNSPEC_TOCSLOT))
    (clobber (reg:P LR_REGNO))]
   "DEFAULT_ABI == ABI_ELFv2"
   "b%T0l\;<ptrload> 2,%2(1)"
   [(set (match_operand 0 "" "")
        (call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
              (match_operand 2 "" "g,g")))
-   (set (reg:P TOC_REGNUM) (unspec [(match_operand:P 3 "const_int_operand" "n,n")] UNSPEC_TOCSLOT))
+   (set (reg:P TOC_REGNUM) (unspec:P [(match_operand:P 3 "const_int_operand" "n,n")] UNSPEC_TOCSLOT))
    (clobber (reg:P LR_REGNO))]
   "DEFAULT_ABI == ABI_ELFv2"
   "b%T1l\;<ptrload> 2,%3(1)"