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()) {