diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2008-01-27 18:35:00 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2008-01-27 18:35:00 +0000 |
commit | efb16f7057e91c41923f5c01bd60966e0d048f7c (patch) | |
tree | 42d18595f4702cdda4591e403463cfe39a509139 /llvm | |
parent | 053c9871cdcb716edbcf223ba1f438da0df2d8a8 (diff) | |
download | bcm5719-llvm-efb16f7057e91c41923f5c01bd60966e0d048f7c.tar.gz bcm5719-llvm-efb16f7057e91c41923f5c01bd60966e0d048f7c.zip |
Be more careful modifying the use_list while also iterating through it.
llvm-svn: 46417
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LoopUnroll.cpp | 3 | ||||
-rw-r--r-- | llvm/test/Transforms/LoopUnroll/2007-11-05-Crash.ll | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopUnroll.cpp b/llvm/lib/Transforms/Scalar/LoopUnroll.cpp index ff2168ac8de..b514156a1af 100644 --- a/llvm/lib/Transforms/Scalar/LoopUnroll.cpp +++ b/llvm/lib/Transforms/Scalar/LoopUnroll.cpp @@ -365,8 +365,9 @@ bool LoopUnroll::unrollLoop(Loop *L, unsigned Count, unsigned Threshold) { // be updated specially after unrolling all the way. if (*BB != LatchBlock) for (Value::use_iterator UI = (*BB)->use_begin(), UE = (*BB)->use_end(); - UI != UE; ++UI) { + UI != UE;) { Instruction *UseInst = cast<Instruction>(*UI); + ++UI; if (isa<PHINode>(UseInst) && !L->contains(UseInst->getParent())) { PHINode *phi = cast<PHINode>(UseInst); Value *Incoming = phi->getIncomingValueForBlock(*BB); diff --git a/llvm/test/Transforms/LoopUnroll/2007-11-05-Crash.ll b/llvm/test/Transforms/LoopUnroll/2007-11-05-Crash.ll index a5e13d5a26a..a46c09e3bde 100644 --- a/llvm/test/Transforms/LoopUnroll/2007-11-05-Crash.ll +++ b/llvm/test/Transforms/LoopUnroll/2007-11-05-Crash.ll @@ -1,5 +1,7 @@ ; RUN: llvm-as < %s | opt -disable-output -loop-unroll ; PR1770 +; PR1947 + %struct.cl_engine = type { i32, i16, i32, i8**, i8**, i8*, i8*, i8*, i8*, i8*, i8*, i8* } %struct.cl_limits = type { i32, i32, i32, i32, i16, i64 } %struct.cli_ac_alt = type { i8, i8*, i16, i16, %struct.cli_ac_alt* } |