[llvm-commits] [llvm] r89990 - in /llvm/trunk: lib/Analysis/MemoryDependenceAnalysis.cpp test/Transforms/GVN/rle-phi-translate.ll
Chris Lattner
sabre at nondot.org
Thu Nov 26 21:19:57 PST 2009
Author: lattner
Date: Thu Nov 26 23:19:56 2009
New Revision: 89990
URL: http://llvm.org/viewvc/llvm-project?rev=89990&view=rev
Log:
try again.
Modified:
llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
llvm/trunk/test/Transforms/GVN/rle-phi-translate.ll
Modified: llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp?rev=89990&r1=89989&r2=89990&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp (original)
+++ llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp Thu Nov 26 23:19:56 2009
@@ -700,7 +700,6 @@
// We can translate a GEP that uses a PHI in the current block for at least
// one of its operands.
- if (0)
if (GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(Inst)) {
for (unsigned i = 0, e = GEP->getNumOperands(); i != e; ++i)
if (PHINode *PN = dyn_cast<PHINode>(GEP->getOperand(i)))
@@ -747,11 +746,11 @@
if (GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(Inst)) {
SmallVector<Value*, 8> GEPOps;
Value *APHIOp = 0;
+ BasicBlock *CurBB = GEP->getParent();
for (unsigned i = 0, e = GEP->getNumOperands(); i != e; ++i) {
- GEPOps.push_back(GEP->getOperand(i));
- if (PHINode *PN = dyn_cast<PHINode>(GEP->getOperand(i)))
- if (PN->getParent() == GEP->getParent())
- GEPOps.back() = APHIOp = PN->getIncomingValueForBlock(Pred);
+ GEPOps.push_back(GEP->getOperand(i)->DoPHITranslation(CurBB, Pred));
+ if (!isa<Constant>(GEPOps.back()))
+ APHIOp = GEPOps.back();
}
// Simplify the GEP to handle 'gep x, 0' -> x etc.
@@ -762,9 +761,9 @@
for (Value::use_iterator UI = APHIOp->use_begin(), E = APHIOp->use_end();
UI != E; ++UI) {
if (GetElementPtrInst *GEPI = dyn_cast<GetElementPtrInst>(*UI))
- if (GEPI->getType() == GEPI->getType() &&
+ if (GEPI->getType() == GEP->getType() &&
GEPI->getNumOperands() == GEPOps.size() &&
- GEPI->getParent()->getParent() == Inst->getParent()->getParent()) {
+ GEPI->getParent()->getParent() == CurBB->getParent()) {
bool Mismatch = false;
for (unsigned i = 0, e = GEPOps.size(); i != e; ++i)
if (GEPI->getOperand(i) != GEPOps[i]) {
Modified: llvm/trunk/test/Transforms/GVN/rle-phi-translate.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/rle-phi-translate.ll?rev=89990&r1=89989&r2=89990&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/GVN/rle-phi-translate.ll (original)
+++ llvm/trunk/test/Transforms/GVN/rle-phi-translate.ll Thu Nov 26 23:19:56 2009
@@ -80,9 +80,9 @@
%i = phi i32 [ 7, %bb1 ], [ 17, %bb ]
%d1 = getelementptr i32* %d, i32 %i
%dv = load i32* %d1
-; HECK: %dv = phi i32 [ 82, %bb1 ], [ 4, %bb ]
-; HECK-NOT: load
-; HECK: ret i32 %dv
+; CHECK: %dv = phi i32 [ 82, %bb1 ], [ 4, %bb ]
+; CHECK-NOT: load
+; CHECK: ret i32 %dv
ret i32 %dv
}
@@ -106,9 +106,9 @@
%i = phi i32 [ 7, %bb1 ], [ 0, %bb ]
%d1 = getelementptr i32* %d, i32 %i
%dv = load i32* %d1
-; HECK: %dv = phi i32 [ 82, %bb1 ], [ 4, %bb ]
-; HECK-NOT: load
-; HECK: ret i32 %dv
+; CHECK: %dv = phi i32 [ 82, %bb1 ], [ 4, %bb ]
+; CHECK-NOT: load
+; CHECK: ret i32 %dv
ret i32 %dv
}
More information about the llvm-commits
mailing list