Fix checking of intermediates having one use in isADDADDMUL
authorRichard Osborne <richard@xmos.com>
Wed, 10 Mar 2010 17:16:29 +0000 (17:16 +0000)
committerRichard Osborne <richard@xmos.com>
Wed, 10 Mar 2010 17:16:29 +0000 (17:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98164 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/XCore/XCoreISelLowering.cpp

index 7dc0274f26850e0b3fe1e25a34d3beea0066c491..82492193d2097fc68d246244d86af6d1b61fa569 100644 (file)
@@ -607,10 +607,11 @@ isADDADDMUL(SDValue Op, SDValue &Mul0, SDValue &Mul1, SDValue &Addend0,
   } else {
     return false;
   }
+  if (requireIntermediatesHaveOneUse && !AddOp.hasOneUse())
+    return false;
   if (OtherOp.getOpcode() == ISD::MUL) {
     // add(add(a,b),mul(x,y))
-    if (requireIntermediatesHaveOneUse &&
-        (!OtherOp.hasOneUse() || !AddOp.hasOneUse()))
+    if (requireIntermediatesHaveOneUse && !OtherOp.hasOneUse())
       return false;
     Mul0 = OtherOp.getOperand(0);
     Mul1 = OtherOp.getOperand(1);