From patchwork Tue Apr 12 08:05:42 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [ARM] Fix PR48090 Date: Mon, 11 Apr 2011 22:05:42 -0000 From: Ramana Radhakrishnan X-Patchwork-Id: 90737 Message-Id: <4DA407D6.6@linaro.org> To: gcc-patches@gcc.gnu.org Cc: Patch Tracking 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 PR target/48090 * config/arm/arm.md (*arm_negdi2): Fix early clobber constraints. "TARGET_ARM" 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))]