http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48090

Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ramana at gcc dot gnu.org

--- Comment #11 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> 
2011-04-11 10:24:09 UTC ---
(In reply to comment #10)
> (In reply to comment #9)
> > I confirm that backporting r159644 and r159683 make things work. From 
> > comment
> > 8, I guess that the bug is still there and that one can still hit it sooner 
> > or
> > later, right  ? (btw, amazing job)
> 
> It probably papers over it as you guessed.
> 
> This bug lacks proper analysis.

The problem is latent in all versions of the compiler and is to do with the
pattern *arm_negdi2 and has nothing to do with the afore mentioned revisions.
Will submit this after a round of testing.



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