summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-12-15 17:35:09 +0000
committerChris Lattner <sabre@nondot.org>2003-12-15 17:35:09 +0000
commiteea45bf361c789e1bcf6c9383e498e8094465066 (patch)
treefbc72f4bd89d29c9429f1df5369a4eb7d0cbf012
parentbe0de4d9179b0fefe6479373c8730b97ab85fb86 (diff)
downloadllvm-eea45bf361c789e1bcf6c9383e498e8094465066.tar.gz
Merge from mainline, bugfix for PR185
llvm-svn: 10474
-rw-r--r--llvm/lib/Transforms/Scalar/IndVarSimplify.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
index ed5aca372ab0..763854ee0b11 100644
--- a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -26,6 +26,7 @@
#include "Support/Debug.h"
#include "Support/Statistic.h"
#include "Support/STLExtras.h"
+#include <algorithm>
using namespace llvm;
namespace {
@@ -206,6 +207,14 @@ static bool TransformLoop(LoopInfo *Loops, Loop *Loop) {
PHIOps.insert(PHIOps.end(), MaybeDead->op_begin(),
MaybeDead->op_end());
MaybeDead->getParent()->getInstList().erase(MaybeDead);
+
+ // Erase any duplicates entries in the PHIOps list.
+ std::vector<Value*>::iterator It =
+ std::find(PHIOps.begin(), PHIOps.end(), MaybeDead);
+ while (It != PHIOps.end()) {
+ PHIOps.erase(It);
+ It = std::find(PHIOps.begin(), PHIOps.end(), MaybeDead);
+ }
// Erasing the instruction could invalidate the AfterPHI iterator!
AfterPHIIt = Header->begin();