[llvm-commits] CVS: llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
Chris Lattner
lattner at cs.uiuc.edu
Wed Apr 21 18:36:01 PDT 2004
Changes in directory llvm/lib/Transforms/Scalar:
IndVarSimplify.cpp updated: 1.60 -> 1.61
---
Log message:
Implement a todo, rewriting all possible scev expressions inside of the
loop. This eliminates the extra add from the previous case, but it's
not clear that this will be a performance win overall. Tommorows test
results will tell. :)
---
Diffs of the changes: (+18 -8)
Index: llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
diff -u llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.60 llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.61
--- llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.60 Wed Apr 21 17:22:01 2004
+++ llvm/lib/Transforms/Scalar/IndVarSimplify.cpp Wed Apr 21 18:36:08 2004
@@ -444,21 +444,31 @@
Changed = true;
}
- DeleteTriviallyDeadInstructions(DeadInsts);
-
- // TODO: In the future we could replace all instructions in the loop body with
- // simpler expressions. It's not clear how useful this would be though or if
- // the code expansion cost would be worth it! We probably shouldn't do this
- // until we have a way to reuse expressions already in the code.
-#if 0
+ // Now replace all derived expressions in the loop body with simpler
+ // expressions.
for (unsigned i = 0, e = L->getBlocks().size(); i != e; ++i)
if (LI->getLoopFor(L->getBlocks()[i]) == L) { // Not in a subloop...
BasicBlock *BB = L->getBlocks()[i];
for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I)
if (I->getType()->isInteger() && // Is an integer instruction
+ !I->use_empty() &&
!Rewriter.isInsertedInstruction(I)) {
SCEVHandle SH = SE->getSCEV(I);
+ Value *V = Rewriter.ExpandCodeFor(SH, I, I->getType());
+ if (V != I) {
+ if (isa<Instruction>(V)) {
+ std::string Name = I->getName();
+ I->setName("");
+ V->setName(Name);
+ }
+ I->replaceAllUsesWith(V);
+ DeadInsts.insert(I);
+ ++NumRemoved;
+ Changed = true;
+ }
}
}
-#endif
+
+
+ DeleteTriviallyDeadInstructions(DeadInsts);
}
More information about the llvm-commits
mailing list