aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-12-17 05:42:08 +0000
committerChris Lattner <sabre@nondot.org>2008-12-17 05:42:08 +0000
commita5e124b31f76182e37ec8a54556fabe2f2369bd1 (patch)
tree905ca433dde2876767a53039f381787dee973e44 /lib
parent8a2d32ebbe8faa19e53dd094621c7d9a226c87f5 (diff)
downloadexternal_llvm-a5e124b31f76182e37ec8a54556fabe2f2369bd1.zip
external_llvm-a5e124b31f76182e37ec8a54556fabe2f2369bd1.tar.gz
external_llvm-a5e124b31f76182e37ec8a54556fabe2f2369bd1.tar.bz2
insert some sequence points and preincrement an iterator to avoid
iterator invalidation problems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61124 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Transforms/IPO/GlobalOpt.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp
index f39a0dc..55fd267 100644
--- a/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/lib/Transforms/IPO/GlobalOpt.cpp
@@ -1205,10 +1205,10 @@ static void RewriteHeapSROALoadUser(Instruction *LoadUser,
// If this is the first time we've seen this PHI, recursively process all
// users.
- for (Value::use_iterator UI = PN->use_begin(), E = PN->use_end(); UI != E;
- ++UI)
- RewriteHeapSROALoadUser(cast<Instruction>(*UI), InsertedScalarizedValues,
- PHIsToRewrite);
+ for (Value::use_iterator UI = PN->use_begin(), E = PN->use_end(); UI != E; ) {
+ Instruction *User = cast<Instruction>(*UI++);
+ RewriteHeapSROALoadUser(User, InsertedScalarizedValues, PHIsToRewrite);
+ }
}
/// RewriteUsesOfLoadForHeapSRoA - We are performing Heap SRoA on a global. Ptr
@@ -1219,9 +1219,10 @@ static void RewriteUsesOfLoadForHeapSRoA(LoadInst *Load,
DenseMap<Value*, std::vector<Value*> > &InsertedScalarizedValues,
std::vector<std::pair<PHINode*, unsigned> > &PHIsToRewrite) {
for (Value::use_iterator UI = Load->use_begin(), E = Load->use_end();
- UI != E; )
- RewriteHeapSROALoadUser(cast<Instruction>(*UI++), InsertedScalarizedValues,
- PHIsToRewrite);
+ UI != E; ) {
+ Instruction *User = cast<Instruction>(*UI++);
+ RewriteHeapSROALoadUser(User, InsertedScalarizedValues, PHIsToRewrite);
+ }
if (Load->use_empty()) {
Load->eraseFromParent();