[llvm-commits] [llvm] r145432 - /llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp
Stepan Dyatkovskiy
stpworld at narod.ru
Tue Nov 29 12:34:39 PST 2011
Author: dyatkovskiy
Date: Tue Nov 29 14:34:39 2011
New Revision: 145432
URL: http://llvm.org/viewvc/llvm-project?rev=145432&view=rev
Log:
Potential bug in RewriteLoopBodyWithConditionConstant: use iterator should not be changed inside the uses enumeration loop.
Modified:
llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp?rev=145432&r1=145431&r2=145432&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp Tue Nov 29 14:34:39 2011
@@ -907,9 +907,13 @@
Instruction *U = dyn_cast<Instruction>(*UI);
if (!U || !L->contains(U))
continue;
- U->replaceUsesOfWith(LIC, Replacement);
Worklist.push_back(U);
}
+
+ for (std::vector<Instruction*>::iterator UI = Worklist.begin();
+ UI != Worklist.end(); ++UI)
+ (*UI)->replaceUsesOfWith(LIC, Replacement);
+
SimplifyCode(Worklist, L);
return;
}
More information about the llvm-commits
mailing list