Changes in directory llvm/lib/Transforms/Scalar:
GVNPRE.cpp updated: 1.4 -> 1.5 --- Log message: Re-fix a bug, where I was now being too aggressive. --- Diffs of the changes: (+5 -1) GVNPRE.cpp | 6 +++++- 1 files changed, 5 insertions(+), 1 deletion(-) Index: llvm/lib/Transforms/Scalar/GVNPRE.cpp diff -u llvm/lib/Transforms/Scalar/GVNPRE.cpp:1.4 llvm/lib/Transforms/Scalar/GVNPRE.cpp:1.5 --- llvm/lib/Transforms/Scalar/GVNPRE.cpp:1.4 Tue May 29 18:15:21 2007 +++ llvm/lib/Transforms/Scalar/GVNPRE.cpp Tue May 29 18:26:30 2007 @@ -376,6 +376,8 @@ // Second Phase of BuildSets - calculate ANTIC_IN + std::set<BasicBlock*> visited; + bool changed = true; unsigned iterations = 0; while (changed) { @@ -388,6 +390,8 @@ PDI != E; ++PDI) { BasicBlock* BB = PDI->getBlock(); + visited.insert(BB); + std::set<Expression>& anticIn = anticipatedIn[BB]; std::set<Expression> old (anticIn.begin(), anticIn.end()); @@ -397,7 +401,7 @@ for (unsigned i = 0; i < BB->getTerminator()->getNumSuccessors(); ++i) { BasicBlock* currSucc = BB->getTerminator()->getSuccessor(i); std::set<Expression> temp; - if (i == 0) + if (visted.find(currSucc) == visited.end()) temp.insert(maximalSet.begin(), maximalSet.end()); else temp.insert(anticIn.begin(), anticIn.end()); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits