Use conditional temp destruction for || and &&.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72838 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp
index 950e9e5..faa4f76 100644
--- a/lib/CodeGen/CGExprScalar.cpp
+++ b/lib/CodeGen/CGExprScalar.cpp
@@ -1290,8 +1290,10 @@
        PI != PE; ++PI)
     PN->addIncoming(llvm::ConstantInt::getFalse(), *PI);
   
+  CGF.PushConditionalTempDestruction();
   CGF.EmitBlock(RHSBlock);
   Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS());
+  CGF.PopConditionalTempDestruction();
   
   // Reaquire the RHS block, as there may be subblocks inserted.
   RHSBlock = Builder.GetInsertBlock();
@@ -1335,10 +1337,14 @@
        PI != PE; ++PI)
     PN->addIncoming(llvm::ConstantInt::getTrue(), *PI);
 
+  CGF.PushConditionalTempDestruction();
+
   // Emit the RHS condition as a bool value.
   CGF.EmitBlock(RHSBlock);
   Value *RHSCond = CGF.EvaluateExprAsBool(E->getRHS());
   
+  CGF.PopConditionalTempDestruction();
+  
   // Reaquire the RHS block, as there may be subblocks inserted.
   RHSBlock = Builder.GetInsertBlock();