If a member initializer create temporaries we need to destroy them. Fixes PR5077.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86225 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGCXX.cpp b/lib/CodeGen/CGCXX.cpp
index 029fded..0e6b5cb 100644
--- a/lib/CodeGen/CGCXX.cpp
+++ b/lib/CodeGen/CGCXX.cpp
@@ -1468,10 +1468,17 @@
        B != E; ++B) {
     CXXBaseOrMemberInitializer *Member = (*B);
     
+    assert(LiveTemporaries.empty() &&
+           "Should not have any live temporaries at initializer start!");
+
     if (Member->isBaseInitializer())
       EmitBaseInitializer(*this, ClassDecl, Member, CtorType);
     else
       EmitMemberInitializer(*this, ClassDecl, Member);
+
+    // Pop any live temporaries that the initializers might have pushed.
+    while (!LiveTemporaries.empty())
+      PopCXXTemporary();
   }
 
   if (!CD->getNumBaseOrMemberInitializers() && !CD->isTrivial()) {