Use external df iterators to avoid revisiting blocks in functions with
multiple setjmp calls.
llvm-svn: 9093
diff --git a/llvm/lib/Transforms/IPO/LowerSetJmp.cpp b/llvm/lib/Transforms/IPO/LowerSetJmp.cpp
index 36f06bd..5be2514 100644
--- a/llvm/lib/Transforms/IPO/LowerSetJmp.cpp
+++ b/llvm/lib/Transforms/IPO/LowerSetJmp.cpp
@@ -137,7 +137,9 @@
for (Value::use_iterator B = SetJmp->use_begin(), E = SetJmp->use_end();
B != E; ++B) {
BasicBlock* BB = cast<Instruction>(*B)->getParent();
- DFSBlocks.insert(df_begin(BB), df_end(BB));
+ for (df_ext_iterator<BasicBlock*> I = df_ext_begin(BB, BBSet),
+ E = df_ext_end(BB, BBSet); I != E; ++I)
+ /* empty */;
}
while (!SetJmp->use_empty()) {