This fixes PR target/70319.  We need to us a scratch register to avoid 
clobbering operand 1.

Tested on hppa64-hp-hpux11.11.  Committed to trunk and gcc-5.

Dave
--
John David Anglin       dave.ang...@bell.net


2016-03-24  John David Anglin  <dang...@gcc.gnu.org>

        PR target/70319
        * config/pa/pa.md (bswapdi2): Use a scratch register.

Index: config/pa/pa.md
===================================================================
--- config/pa/pa.md     (revision 234427)
+++ config/pa/pa.md     (working copy)
@@ -1229,9 +1229,10 @@
 
 (define_insn "bswapdi2"
   [(set (match_operand:DI 0 "register_operand" "=&r")
-       (bswap:DI (match_operand:DI 1 "register_operand" "+r")))]
+       (bswap:DI (match_operand:DI 1 "register_operand" "r")))
+   (clobber (match_scratch:DI 2 "=r"))]
   "TARGET_64BIT"
-  "permh,3210 %1,%1\;hshl %1,8,%0\;hshr,u %1,8,%1\;or %0,%1,%0"
+  "permh,3210 %1,%2\;hshl %2,8,%0\;hshr,u %2,8,%2\;or %0,%2,%0"
   [(set_attr "type" "multi")
    (set_attr "length" "16")])
 

Reply via email to