From d026dc499c620d0a28f492cbfc86a036c44b936e Mon Sep 17 00:00:00 2001 From: Sebastian Redl Date: Sun, 19 Feb 2012 16:03:09 +0000 Subject: Make heap-allocation of std::initializer_list 'work'. llvm-svn: 150931 --- clang/lib/CodeGen/CGExprAgg.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'clang/lib/CodeGen/CGExprAgg.cpp') diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index 13f5bc47d5b..afe70a5dda8 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -1263,19 +1263,17 @@ void CodeGenFunction::EmitAggregateCopy(llvm::Value *DestPtr, Alignment, isVolatile); } -void CodeGenFunction::MaybeEmitStdInitializerListCleanup(LValue lvalue, - const Expr *init) { +void CodeGenFunction::MaybeEmitStdInitializerListCleanup(llvm::Value *loc, + const Expr *init) { const ExprWithCleanups *cleanups = dyn_cast(init); - if (!cleanups) - return; // Nothing interesting here. - init = cleanups->getSubExpr(); + if (cleanups) + init = cleanups->getSubExpr(); if (isa(init) && cast(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(init)); + EmitStdInitializerListCleanup(loc, cast(init)); } } -- cgit v1.2.3