Revise previous patch per review.
authorDale Johannesen <dalej@apple.com>
Mon, 25 Feb 2008 22:29:22 +0000 (22:29 +0000)
committerDale Johannesen <dalej@apple.com>
Mon, 25 Feb 2008 22:29:22 +0000 (22:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47573 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index 31f80ecbb732069aaf2530458968ec75bc53cdc0..60604ac91cb669f1699cfc0e90f1898c9d47a92a 100644 (file)
@@ -5885,6 +5885,7 @@ static SDOperand PerformSTORECombine(StoreSDNode *St, SelectionDAG &DAG,
       isa<LoadSDNode>(St->getValue()) &&
       !cast<LoadSDNode>(St->getValue())->isVolatile() &&
       St->getChain().hasOneUse() && !St->isVolatile()) {
+    SDNode* LdVal = St->getValue().Val;
     LoadSDNode *Ld = 0;
     int TokenFactorIndex = -1;
     SmallVector<SDOperand, 8> Ops;
@@ -5892,14 +5893,12 @@ static SDOperand PerformSTORECombine(StoreSDNode *St, SelectionDAG &DAG,
     // Must be a store of a load.  We currently handle two cases:  the load
     // is a direct child, and it's under an intervening TokenFactor.  It is
     // possible to dig deeper under nested TokenFactors.
-    if (ChainVal == St->getValue().Val)
+    if (ChainVal == LdVal)
       Ld = cast<LoadSDNode>(St->getChain());
     else if (St->getValue().hasOneUse() &&
              ChainVal->getOpcode() == ISD::TokenFactor) {
       for (unsigned i=0, e = ChainVal->getNumOperands(); i != e; ++i) {
-        if (ChainVal->getOperand(i).Val == St->getValue().Val) {
-          if (TokenFactorIndex != -1)
-            return SDOperand();
+        if (ChainVal->getOperand(i).Val == LdVal) {
           TokenFactorIndex = i;
           Ld = cast<LoadSDNode>(St->getValue());
         } else