diff options
Diffstat (limited to 'clang/lib/CodeGen/CGExpr.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index 85b01387e83..ae4084ba6ce 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -1396,6 +1396,12 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) { llvm::Value *V = LocalDeclMap[VD]; if (!V && VD->isStaticLocal()) V = CGM.getStaticLocalDeclAddress(VD); + + // Use special handling for lambdas. + if (!V) + if (FieldDecl *FD = LambdaCaptureFields.lookup(VD)) + return EmitLValueForField(CXXABIThisValue, FD, 0); + assert(V && "DeclRefExpr not entered in LocalDeclMap?"); if (VD->hasAttr<BlocksAttr>()) |