Make heap-allocation of std::initializer_list 'work'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150931 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGExprAgg.cpp b/lib/CodeGen/CGExprAgg.cpp
index 13f5bc4..afe70a5 100644
--- a/lib/CodeGen/CGExprAgg.cpp
+++ b/lib/CodeGen/CGExprAgg.cpp
@@ -1263,19 +1263,17 @@
                        Alignment, isVolatile);
 }
 
-void CodeGenFunction::MaybeEmitStdInitializerListCleanup(LValue lvalue,
-                                                    const Expr *init) {
+void CodeGenFunction::MaybeEmitStdInitializerListCleanup(llvm::Value *loc,
+                                                         const Expr *init) {
   const ExprWithCleanups *cleanups = dyn_cast<ExprWithCleanups>(init);
-  if (!cleanups)
-    return; // Nothing interesting here.
-  init = cleanups->getSubExpr();
+  if (cleanups)
+    init = cleanups->getSubExpr();
 
   if (isa<InitListExpr>(init) &&
       cast<InitListExpr>(init)->initializesStdInitializerList()) {
     // We initialized this std::initializer_list with an initializer list.
     // A backing array was created. Push a cleanup for it.
-    EmitStdInitializerListCleanup(lvalue.getAddress(),
-                                  cast<InitListExpr>(init));
+    EmitStdInitializerListCleanup(loc, cast<InitListExpr>(init));
   }
 }