diff options
author | Dale Johannesen <dalej@apple.com> | 2008-02-25 22:29:22 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2008-02-25 22:29:22 +0000 |
commit | 65b404d61ca19056a912906d8ce094c33f4b080a (patch) | |
tree | 0c6911b2d77638341f3d15dba317a25a393d5b1b /llvm/lib | |
parent | 7845b2607a662710d3e25359131d83151bf3e6b1 (diff) | |
download | bcm5719-llvm-65b404d61ca19056a912906d8ce094c33f4b080a.tar.gz bcm5719-llvm-65b404d61ca19056a912906d8ce094c33f4b080a.zip |
Revise previous patch per review.
llvm-svn: 47573
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 31f80ecbb73..60604ac91cb 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -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 |