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"