Don't allocate unused storage for captures/capture initializers in lambda expressions
llvm-svn: 150394
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index 29ff69d..1f8a57a 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -781,13 +781,10 @@
// Determine the type of the expression (i.e., the type of the
// function object we're creating).
QualType T = Context.getTypeDeclType(Class);
- size_t Size = sizeof(LambdaExpr) + sizeof(Capture) * Captures.size()
- + sizeof(Stmt *) * (Captures.size() + 1);
- void *Mem = Context.Allocate(Size, llvm::alignOf<LambdaExpr>());
- return new (Mem) LambdaExpr(T, IntroducerRange, CaptureDefault,
- Captures, ExplicitParams, CaptureInits,
- ClosingBrace);
+ return new (Context) LambdaExpr(T, IntroducerRange, CaptureDefault,
+ Captures, ExplicitParams, CaptureInits,
+ ClosingBrace);
}
LambdaExpr::capture_iterator LambdaExpr::capture_begin() const {