aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Transforms/Scalar
diff options
context:
space:
mode:
authorJohn Criswell <criswell@uiuc.edu>2003-12-18 17:19:19 +0000
committerJohn Criswell <criswell@uiuc.edu>2003-12-18 17:19:19 +0000
commit47df12d80db90e125e9f2ff764286ee11665476d (patch)
treec48871322d66d8e9f4fa772fbe38825251401e0d /lib/Transforms/Scalar
parentd000e1dc2f08892aaa8c1bfd96f85f24b9d66cbb (diff)
downloadexternal_llvm-47df12d80db90e125e9f2ff764286ee11665476d.zip
external_llvm-47df12d80db90e125e9f2ff764286ee11665476d.tar.gz
external_llvm-47df12d80db90e125e9f2ff764286ee11665476d.tar.bz2
Reverted back to previous revision - this was previously merged
according to the CVS log messages. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10517 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar')
-rw-r--r--lib/Transforms/Scalar/IndVarSimplify.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp
index 0cc408c..763854e 100644
--- a/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -15,19 +15,19 @@
//===----------------------------------------------------------------------===//
#include "llvm/Transforms/Scalar.h"
-#include "llvm/Analysis/InductionVariable.h"
-#include "llvm/Analysis/LoopInfo.h"
+#include "llvm/Constants.h"
+#include "llvm/Type.h"
#include "llvm/iPHINode.h"
#include "llvm/iOther.h"
-#include "llvm/Type.h"
-#include "llvm/Constants.h"
+#include "llvm/Analysis/InductionVariable.h"
+#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Support/CFG.h"
+#include "llvm/Transforms/Utils/Local.h"
#include "Support/Debug.h"
#include "Support/Statistic.h"
#include "Support/STLExtras.h"
#include <algorithm>
-
-namespace llvm {
+using namespace llvm;
namespace {
Statistic<> NumRemoved ("indvars", "Number of aux indvars removed");
@@ -141,6 +141,8 @@ static bool TransformLoop(LoopInfo *Loops, Loop *Loop) {
DEBUG(IV->print(std::cerr));
+ while (isa<PHINode>(AfterPHIIt)) ++AfterPHIIt;
+
// Don't do math with pointers...
const Type *IVTy = IV->Phi->getType();
if (isa<PointerType>(IVTy)) IVTy = Type::ULongTy;
@@ -186,6 +188,12 @@ static bool TransformLoop(LoopInfo *Loops, Loop *Loop) {
IV->Phi->setName("");
Val->setName(OldName);
+ // Get the incoming values used by the PHI node
+ std::vector<Value*> PHIOps;
+ PHIOps.reserve(IV->Phi->getNumIncomingValues());
+ for (unsigned i = 0, e = IV->Phi->getNumIncomingValues(); i != e; ++i)
+ PHIOps.push_back(IV->Phi->getIncomingValue(i));
+
// Delete the old, now unused, phi node...
Header->getInstList().erase(IV->Phi);
@@ -242,8 +250,7 @@ namespace {
"Canonicalize Induction Variables");
}
-Pass *createIndVarSimplifyPass() {
+Pass *llvm::createIndVarSimplifyPass() {
return new InductionVariableSimplify();
}
-} // End llvm namespace