diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2012-02-09 03:32:31 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2012-02-09 03:32:31 +0000 |
commit | 4c5d8afd100189b6cce4fd89bfb8aec5700acb50 (patch) | |
tree | 82fefe6b9b44cfee1a74e99e7267dfd598c4f5eb /lib/CodeGen/CGExprAgg.cpp | |
parent | b4e5e286a5cd156247720b1eb204abaa8e09568d (diff) |
Refactor lambda IRGen so AggExprEmitter::VisitLambdaExpr does the right thing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150146 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGExprAgg.cpp')
-rw-r--r-- | lib/CodeGen/CGExprAgg.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/CodeGen/CGExprAgg.cpp b/lib/CodeGen/CGExprAgg.cpp index 2c10fe6a11..a85cb9dbc3 100644 --- a/lib/CodeGen/CGExprAgg.cpp +++ b/lib/CodeGen/CGExprAgg.cpp @@ -142,12 +142,12 @@ public: } void VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E); void VisitCXXConstructExpr(const CXXConstructExpr *E); + void VisitLambdaExpr(LambdaExpr *E); void VisitExprWithCleanups(ExprWithCleanups *E); void VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E); void VisitCXXTypeidExpr(CXXTypeidExpr *E) { EmitAggLoadOfLValue(E); } void VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *E); void VisitOpaqueValueExpr(OpaqueValueExpr *E); - void VisitLambdaExpr(LambdaExpr *E) { EmitAggLoadOfLValue(E); } void VisitPseudoObjectExpr(PseudoObjectExpr *E) { if (E->isGLValue()) { @@ -539,6 +539,12 @@ AggExprEmitter::VisitCXXConstructExpr(const CXXConstructExpr *E) { CGF.EmitCXXConstructExpr(E, Slot); } +void +AggExprEmitter::VisitLambdaExpr(LambdaExpr *E) { + AggValueSlot Slot = EnsureSlot(E->getType()); + CGF.EmitLambdaExpr(E, Slot); +} + void AggExprEmitter::VisitExprWithCleanups(ExprWithCleanups *E) { CGF.enterFullExpression(E); CodeGenFunction::RunCleanupsScope cleanups(CGF); |