Hi,

This should fix PR48090 and should be applied to all release branches. The first alternative doesn't need an early clobber since it is tied to operand 0 - the second alternative however does need one. This is a bug that manifests itself with a particular set of command line options and it is interesting to note that this hasn't been caught in such a long time.

Testing in progress . Ok to commit to all release branches ?

cheers
Ramana

2011-04-11  Ramana Radhakrishnan  <ramana.radhakrish...@linaro.org>

        PR target/48090
        * config/arm/arm.md (*arm_negdi2): Fix early clobber constraints.


Index: gcc/config/arm/arm.md
===================================================================
--- gcc/config/arm/arm.md       (revision 172252)
+++ gcc/config/arm/arm.md       (working copy)
@@ -3554,7 +3554,7 @@
;; The constraints here are to prevent a *partial* overlap (where %Q0 == %R1).
 ;; The first alternative allows the common case of a *full* overlap.
 (define_insn "*arm_negdi2"
-  [(set (match_operand:DI         0 "s_register_operand" "=&r,r")
+  [(set (match_operand:DI         0 "s_register_operand" "=r,&r")
        (neg:DI (match_operand:DI 1 "s_register_operand"  "0,r")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_ARM"


Reply via email to