Fix some obvious bugs in the conditional-cleanup code and then make the
dtor cleanup use it.

llvm-svn: 124309
diff --git a/clang/lib/CodeGen/CGException.cpp b/clang/lib/CodeGen/CGException.cpp
index 5845f1e..58af36a 100644
--- a/clang/lib/CodeGen/CGException.cpp
+++ b/clang/lib/CodeGen/CGException.cpp
@@ -179,8 +179,7 @@
   // Initialize it to false at a site that's guaranteed to be run
   // before each evaluation.
   llvm::BasicBlock *block = OutermostConditional->getStartingBlock();
-  new llvm::StoreInst(Builder.getFalse(), run,
-                      block->getFirstNonPHIOrDbg());
+  new llvm::StoreInst(Builder.getFalse(), run, &block->back());
 
   // Initialize it to true at the current location.
   Builder.CreateStore(Builder.getTrue(), run);