Ensure we only generate one terminate handler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90998 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGException.cpp b/lib/CodeGen/CGException.cpp
index 13780b3..9f4d50c 100644
--- a/lib/CodeGen/CGException.cpp
+++ b/lib/CodeGen/CGException.cpp
@@ -683,6 +683,9 @@
 }
 
 llvm::BasicBlock *CodeGenFunction::getTerminateHandler() {
+  if (TerminateHandler)
+    return TerminateHandler;
+
   llvm::BasicBlock *Cont = 0;
 
   if (HaveInsertPoint()) {
@@ -702,7 +705,7 @@
     CGM.getIntrinsic(llvm::Intrinsic::eh_selector);
 
   // Set up terminate handler
-  llvm::BasicBlock *TerminateHandler = createBasicBlock("terminate.handler");
+  TerminateHandler = createBasicBlock("terminate.handler");
   EmitBlock(TerminateHandler);
   llvm::Value *Exc = Builder.CreateCall(llvm_eh_exception, "exc");
   // We are required to emit this call to satisfy LLVM, even