diff options
author | Chris Lattner <sabre@nondot.org> | 2003-12-15 17:34:02 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-12-15 17:34:02 +0000 |
commit | 9e45d2e0e8d750ccca58fac3782ab9f821176cf8 (patch) | |
tree | 0b8ec139c61bfd6c371af9a08be3e4ad38d11978 /lib/Transforms/Scalar | |
parent | 215da0c0400ccb54abc75807700343ca6d230129 (diff) | |
download | external_llvm-9e45d2e0e8d750ccca58fac3782ab9f821176cf8.zip external_llvm-9e45d2e0e8d750ccca58fac3782ab9f821176cf8.tar.gz external_llvm-9e45d2e0e8d750ccca58fac3782ab9f821176cf8.tar.bz2 |
Fix for PR185 & IndVarsSimplify/2003-12-15-Crash.llx
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10473 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar')
-rw-r--r-- | lib/Transforms/Scalar/IndVarSimplify.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp index ed5aca3..763854e 100644 --- a/lib/Transforms/Scalar/IndVarSimplify.cpp +++ b/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(); |