On Tue, Dec 16, 2014 at 12:01 AM, Alexey Bataev <[email protected]> wrote:
> Author: abataev > Date: Tue Dec 16 02:01:48 2014 > New Revision: 224329 > > URL: http://llvm.org/viewvc/llvm-project?rev=224329&view=rev > Log: > Renamed RefersToEnclosingLocal bitfield to RefersToCapturedVariable. > Bitfield RefersToEnclosingLocal of Stmt::DeclRefExprBitfields renamed to > RefersToCapturedVariable to reflect latest changes introduced in commit > 224323. Also renamed method Expr::refersToEnclosingLocal() to > Expr::refersToCapturedVariable() and comments for constant arguments. > No functional changes. > This seems like a bad idea for me. It's incorrect: for a lambda, the flag means that the DeclRefExpr refers to an enclosing local, and does *not* imply that the variable is necessarily captured. This confusion has already led to a bug (fixed in r225060). It seems like the purpose of this change is to allow the same flag to be used to represent the case where a CapturedStmt captures a global variable? Using the same flag to mean "this is a local from an enclosing function scope (that may or may not be captured)" and to mean "this is a global that is definitely captured" seems problematic. Modified: > cfe/trunk/include/clang/AST/Expr.h > cfe/trunk/include/clang/AST/Stmt.h > cfe/trunk/lib/AST/ASTImporter.cpp > cfe/trunk/lib/AST/Expr.cpp > cfe/trunk/lib/Analysis/BodyFarm.cpp > cfe/trunk/lib/CodeGen/CGExpr.cpp > cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp > cfe/trunk/lib/Frontend/Rewrite/RewriteObjC.cpp > cfe/trunk/lib/Sema/SemaChecking.cpp > cfe/trunk/lib/Sema/SemaDecl.cpp > cfe/trunk/lib/Sema/SemaExpr.cpp > cfe/trunk/lib/Sema/SemaOpenMP.cpp > cfe/trunk/lib/Sema/SemaStmt.cpp > cfe/trunk/lib/Serialization/ASTReaderStmt.cpp > cfe/trunk/lib/Serialization/ASTWriterDecl.cpp > cfe/trunk/lib/Serialization/ASTWriterStmt.cpp > > Modified: cfe/trunk/include/clang/AST/Expr.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Expr.h?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/include/clang/AST/Expr.h (original) > +++ cfe/trunk/include/clang/AST/Expr.h Tue Dec 16 02:01:48 2014 > @@ -886,9 +886,9 @@ public: > /// DeclRefExprBits.HasTemplateKWAndArgsInfo: > /// Specifies when this declaration reference expression has an > explicit > /// C++ template keyword and/or template argument list. > -/// DeclRefExprBits.RefersToEnclosingLocal > +/// DeclRefExprBits.RefersToCapturedVariable > /// Specifies when this declaration reference expression (validly) > -/// refers to a local variable from a different function. > +/// refers to a captured variable. > class DeclRefExpr : public Expr { > /// \brief The declaration that we are referencing. > ValueDecl *D; > @@ -933,7 +933,7 @@ class DeclRefExpr : public Expr { > DeclRefExpr(const ASTContext &Ctx, > NestedNameSpecifierLoc QualifierLoc, > SourceLocation TemplateKWLoc, > - ValueDecl *D, bool refersToEnclosingLocal, > + ValueDecl *D, bool RefersToCapturedVariable, > const DeclarationNameInfo &NameInfo, > NamedDecl *FoundD, > const TemplateArgumentListInfo *TemplateArgs, > @@ -948,7 +948,7 @@ class DeclRefExpr : public Expr { > void computeDependence(const ASTContext &C); > > public: > - DeclRefExpr(ValueDecl *D, bool refersToEnclosingLocal, QualType T, > + DeclRefExpr(ValueDecl *D, bool RefersToCapturedVariable, QualType T, > ExprValueKind VK, SourceLocation L, > const DeclarationNameLoc &LocInfo = DeclarationNameLoc()) > : Expr(DeclRefExprClass, T, VK, OK_Ordinary, false, false, false, > false), > @@ -957,22 +957,22 @@ public: > DeclRefExprBits.HasTemplateKWAndArgsInfo = 0; > DeclRefExprBits.HasFoundDecl = 0; > DeclRefExprBits.HadMultipleCandidates = 0; > - DeclRefExprBits.RefersToEnclosingLocal = refersToEnclosingLocal; > + DeclRefExprBits.RefersToCapturedVariable = RefersToCapturedVariable; > computeDependence(D->getASTContext()); > } > > static DeclRefExpr * > Create(const ASTContext &Context, NestedNameSpecifierLoc QualifierLoc, > - SourceLocation TemplateKWLoc, ValueDecl *D, bool > isEnclosingLocal, > - SourceLocation NameLoc, QualType T, ExprValueKind VK, > - NamedDecl *FoundD = nullptr, > + SourceLocation TemplateKWLoc, ValueDecl *D, > + bool RefersToCapturedVariable, SourceLocation NameLoc, QualType > T, > + ExprValueKind VK, NamedDecl *FoundD = nullptr, > const TemplateArgumentListInfo *TemplateArgs = nullptr); > > static DeclRefExpr * > Create(const ASTContext &Context, NestedNameSpecifierLoc QualifierLoc, > - SourceLocation TemplateKWLoc, ValueDecl *D, bool > isEnclosingLocal, > - const DeclarationNameInfo &NameInfo, QualType T, ExprValueKind > VK, > - NamedDecl *FoundD = nullptr, > + SourceLocation TemplateKWLoc, ValueDecl *D, > + bool RefersToCapturedVariable, const DeclarationNameInfo > &NameInfo, > + QualType T, ExprValueKind VK, NamedDecl *FoundD = nullptr, > const TemplateArgumentListInfo *TemplateArgs = nullptr); > > /// \brief Construct an empty declaration reference expression. > @@ -1144,10 +1144,9 @@ public: > DeclRefExprBits.HadMultipleCandidates = V; > } > > - /// Does this DeclRefExpr refer to a local declaration from an > - /// enclosing function scope? > - bool refersToEnclosingLocal() const { > - return DeclRefExprBits.RefersToEnclosingLocal; > + /// \brief Does this DeclRefExpr refer to a captured variable? > + bool refersToCapturedVariable() const { > + return DeclRefExprBits.RefersToCapturedVariable; > } > > static bool classof(const Stmt *T) { > > Modified: cfe/trunk/include/clang/AST/Stmt.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Stmt.h?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/include/clang/AST/Stmt.h (original) > +++ cfe/trunk/include/clang/AST/Stmt.h Tue Dec 16 02:01:48 2014 > @@ -212,7 +212,7 @@ protected: > unsigned HasTemplateKWAndArgsInfo : 1; > unsigned HasFoundDecl : 1; > unsigned HadMultipleCandidates : 1; > - unsigned RefersToEnclosingLocal : 1; > + unsigned RefersToCapturedVariable : 1; > }; > > class CastExprBitfields { > > Modified: cfe/trunk/lib/AST/ASTImporter.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTImporter.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/AST/ASTImporter.cpp (original) > +++ cfe/trunk/lib/AST/ASTImporter.cpp Tue Dec 16 02:01:48 2014 > @@ -4406,7 +4406,7 @@ Expr *ASTNodeImporter::VisitDeclRefExpr( > > Importer.Import(E->getQualifierLoc()), > > Importer.Import(E->getTemplateKeywordLoc()), > ToD, > - E->refersToEnclosingLocal(), > + E->refersToCapturedVariable(), > > Importer.Import(E->getLocation()), > T, E->getValueKind(), > FoundD, > > Modified: cfe/trunk/lib/AST/Expr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/AST/Expr.cpp (original) > +++ cfe/trunk/lib/AST/Expr.cpp Tue Dec 16 02:01:48 2014 > @@ -322,7 +322,7 @@ void DeclRefExpr::computeDependence(cons > DeclRefExpr::DeclRefExpr(const ASTContext &Ctx, > NestedNameSpecifierLoc QualifierLoc, > SourceLocation TemplateKWLoc, > - ValueDecl *D, bool RefersToEnclosingLocal, > + ValueDecl *D, bool RefersToCapturedVariable, > const DeclarationNameInfo &NameInfo, > NamedDecl *FoundD, > const TemplateArgumentListInfo *TemplateArgs, > @@ -343,7 +343,7 @@ DeclRefExpr::DeclRefExpr(const ASTContex > getInternalFoundDecl() = FoundD; > DeclRefExprBits.HasTemplateKWAndArgsInfo > = (TemplateArgs || TemplateKWLoc.isValid()) ? 1 : 0; > - DeclRefExprBits.RefersToEnclosingLocal = RefersToEnclosingLocal; > + DeclRefExprBits.RefersToCapturedVariable = RefersToCapturedVariable; > if (TemplateArgs) { > bool Dependent = false; > bool InstantiationDependent = false; > @@ -367,14 +367,14 @@ DeclRefExpr *DeclRefExpr::Create(const A > NestedNameSpecifierLoc QualifierLoc, > SourceLocation TemplateKWLoc, > ValueDecl *D, > - bool RefersToEnclosingLocal, > + bool RefersToCapturedVariable, > SourceLocation NameLoc, > QualType T, > ExprValueKind VK, > NamedDecl *FoundD, > const TemplateArgumentListInfo > *TemplateArgs) { > return Create(Context, QualifierLoc, TemplateKWLoc, D, > - RefersToEnclosingLocal, > + RefersToCapturedVariable, > DeclarationNameInfo(D->getDeclName(), NameLoc), > T, VK, FoundD, TemplateArgs); > } > @@ -383,7 +383,7 @@ DeclRefExpr *DeclRefExpr::Create(const A > NestedNameSpecifierLoc QualifierLoc, > SourceLocation TemplateKWLoc, > ValueDecl *D, > - bool RefersToEnclosingLocal, > + bool RefersToCapturedVariable, > const DeclarationNameInfo &NameInfo, > QualType T, > ExprValueKind VK, > @@ -405,7 +405,7 @@ DeclRefExpr *DeclRefExpr::Create(const A > > void *Mem = Context.Allocate(Size, llvm::alignOf<DeclRefExpr>()); > return new (Mem) DeclRefExpr(Context, QualifierLoc, TemplateKWLoc, D, > - RefersToEnclosingLocal, > + RefersToCapturedVariable, > NameInfo, FoundD, TemplateArgs, T, VK); > } > > > Modified: cfe/trunk/lib/Analysis/BodyFarm.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/BodyFarm.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Analysis/BodyFarm.cpp (original) > +++ cfe/trunk/lib/Analysis/BodyFarm.cpp Tue Dec 16 02:01:48 2014 > @@ -115,7 +115,7 @@ DeclRefExpr *ASTMaker::makeDeclRefExpr(c > /* QualifierLoc = */ NestedNameSpecifierLoc(), > /* TemplateKWLoc = */ SourceLocation(), > /* D = */ const_cast<VarDecl*>(D), > - /* isEnclosingLocal = */ false, > + /* RefersToCapturedVariable = */ false, > /* NameLoc = */ SourceLocation(), > /* T = */ D->getType(), > /* VK = */ VK_LValue); > > Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Tue Dec 16 02:01:48 2014 > @@ -1907,7 +1907,7 @@ LValue CodeGenFunction::EmitDeclRefLValu > > if (const auto *VD = dyn_cast<VarDecl>(ND)) { > // Check for captured variables. > - if (E->refersToEnclosingLocal()) { > + if (E->refersToCapturedVariable()) { > if (auto *FD = LambdaCaptureFields.lookup(VD)) > return EmitCapturedFieldLValue(*this, FD, CXXABIThisValue); > else if (CapturedStmtInfo) { > @@ -1916,9 +1916,10 @@ LValue CodeGenFunction::EmitDeclRefLValu > else > return EmitCapturedFieldLValue(*this, > CapturedStmtInfo->lookup(VD), > > CapturedStmtInfo->getContextValue()); > - } else > - return MakeAddrLValue(GetAddrOfBlockDecl(VD, > VD->hasAttr<BlocksAttr>()), > - T, Alignment); > + } > + assert(isa<BlockDecl>(CurCodeDecl)); > + return MakeAddrLValue(GetAddrOfBlockDecl(VD, > VD->hasAttr<BlocksAttr>()), > + T, Alignment); > } > > // Global Named registers access via intrinsics only > > Modified: cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp (original) > +++ cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp Tue Dec 16 > 02:01:48 2014 > @@ -4564,7 +4564,7 @@ void RewriteModernObjC::GetBlockDeclRefE > } > // Handle specific things. > if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(S)) > - if (DRE->refersToEnclosingLocal() || > + if (DRE->refersToCapturedVariable() || > HasLocalVariableExternalStorage(DRE->getDecl())) > // FIXME: Handle enums. > BlockDeclRefs.push_back(DRE); > @@ -4591,7 +4591,7 @@ void RewriteModernObjC::GetInnerBlockDec > } > // Handle specific things. > if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(S)) { > - if (DRE->refersToEnclosingLocal() || > + if (DRE->refersToCapturedVariable() || > HasLocalVariableExternalStorage(DRE->getDecl())) { > if (!InnerContexts.count(DRE->getDecl()->getDeclContext())) > InnerBlockDeclRefs.push_back(DRE); > @@ -4772,7 +4772,7 @@ Stmt *RewriteModernObjC::RewriteBlockDec > // Rewrite the byref variable into BYREFVAR->__forwarding->BYREFVAR > // for each DeclRefExp where BYREFVAR is name of the variable. > ValueDecl *VD = DeclRefExp->getDecl(); > - bool isArrow = DeclRefExp->refersToEnclosingLocal() || > + bool isArrow = DeclRefExp->refersToCapturedVariable() || > HasLocalVariableExternalStorage(DeclRefExp->getDecl()); > > FieldDecl *FD = FieldDecl::Create(*Context, nullptr, SourceLocation(), > > Modified: cfe/trunk/lib/Frontend/Rewrite/RewriteObjC.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Rewrite/RewriteObjC.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Frontend/Rewrite/RewriteObjC.cpp (original) > +++ cfe/trunk/lib/Frontend/Rewrite/RewriteObjC.cpp Tue Dec 16 02:01:48 2014 > @@ -3672,7 +3672,7 @@ void RewriteObjC::GetBlockDeclRefExprs(S > } > // Handle specific things. > if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(S)) > - if (DRE->refersToEnclosingLocal() || > + if (DRE->refersToCapturedVariable() || > HasLocalVariableExternalStorage(DRE->getDecl())) > // FIXME: Handle enums. > BlockDeclRefs.push_back(DRE); > @@ -3699,7 +3699,7 @@ void RewriteObjC::GetInnerBlockDeclRefEx > } > // Handle specific things. > if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(S)) { > - if (DRE->refersToEnclosingLocal() || > + if (DRE->refersToCapturedVariable() || > HasLocalVariableExternalStorage(DRE->getDecl())) { > if (!InnerContexts.count(DRE->getDecl()->getDeclContext())) > InnerBlockDeclRefs.push_back(DRE); > @@ -3861,7 +3861,7 @@ Stmt *RewriteObjC::RewriteBlockDeclRefEx > // Rewrite the byref variable into BYREFVAR->__forwarding->BYREFVAR > // for each DeclRefExp where BYREFVAR is name of the variable. > ValueDecl *VD = DeclRefExp->getDecl(); > - bool isArrow = DeclRefExp->refersToEnclosingLocal() || > + bool isArrow = DeclRefExp->refersToCapturedVariable() || > HasLocalVariableExternalStorage(DeclRefExp->getDecl()); > > FieldDecl *FD = FieldDecl::Create(*Context, nullptr, SourceLocation(), > > Modified: cfe/trunk/lib/Sema/SemaChecking.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaChecking.cpp (original) > +++ cfe/trunk/lib/Sema/SemaChecking.cpp Tue Dec 16 02:01:48 2014 > @@ -4972,7 +4972,7 @@ static Expr *EvalAddr(Expr *E, SmallVect > DeclRefExpr *DR = cast<DeclRefExpr>(E); > > // If we leave the immediate function, the lifetime isn't about to > end. > - if (DR->refersToEnclosingLocal()) > + if (DR->refersToCapturedVariable()) > return nullptr; > > if (VarDecl *V = dyn_cast<VarDecl>(DR->getDecl())) > @@ -5139,7 +5139,7 @@ do { > DeclRefExpr *DR = cast<DeclRefExpr>(E); > > // If we leave the immediate function, the lifetime isn't about to > end. > - if (DR->refersToEnclosingLocal()) > + if (DR->refersToCapturedVariable()) > return nullptr; > > if (VarDecl *V = dyn_cast<VarDecl>(DR->getDecl())) { > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Tue Dec 16 02:01:48 2014 > @@ -10181,7 +10181,7 @@ static void RebuildLambdaScopeInfo(CXXMe > QualType CaptureType = VD->getType(); > const bool ByRef = C.getCaptureKind() == LCK_ByRef; > LSI->addCapture(VD, /*IsBlock*/false, ByRef, > - /*RefersToEnclosingLocal*/true, C.getLocation(), > + /*RefersToCapturedVariable*/true, C.getLocation(), > /*EllipsisLoc*/C.isPackExpansion() > ? C.getEllipsisLoc() : SourceLocation(), > CaptureType, /*Expr*/ nullptr); > > Modified: cfe/trunk/lib/Sema/SemaExpr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaExpr.cpp Tue Dec 16 02:01:48 2014 > @@ -1601,7 +1601,7 @@ Sema::BuildDeclRefExpr(ValueDecl *D, Qua > } > } > > - bool refersToEnclosingScope = > + bool RefersToCapturedVariable = > isa<VarDecl>(D) && > NeedToCaptureVariable(cast<VarDecl>(D), NameInfo.getLoc()); > > @@ -1613,15 +1613,15 @@ Sema::BuildDeclRefExpr(ValueDecl *D, Qua > E = DeclRefExpr::Create( > Context, > SS ? SS->getWithLocInContext(Context) : NestedNameSpecifierLoc(), > - VarSpec->getTemplateKeywordLoc(), D, refersToEnclosingScope, > + VarSpec->getTemplateKeywordLoc(), D, RefersToCapturedVariable, > NameInfo.getLoc(), Ty, VK, FoundD, TemplateArgs); > } else { > assert(!TemplateArgs && "No template arguments for non-variable" > " template specialization references"); > - E = DeclRefExpr::Create( > - Context, > - SS ? SS->getWithLocInContext(Context) : NestedNameSpecifierLoc(), > - SourceLocation(), D, refersToEnclosingScope, NameInfo, Ty, VK, > FoundD); > + E = DeclRefExpr::Create(Context, SS ? SS->getWithLocInContext(Context) > + : NestedNameSpecifierLoc(), > + SourceLocation(), D, RefersToCapturedVariable, > + NameInfo, Ty, VK, FoundD); > } > > MarkDeclRefReferenced(E); > @@ -8586,7 +8586,7 @@ static NonConstCaptureKind isReferenceTo > // Must be a reference to a declaration from an enclosing scope. > DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E); > if (!DRE) return NCCK_None; > - if (!DRE->refersToEnclosingLocal()) return NCCK_None; > + if (!DRE->refersToCapturedVariable()) return NCCK_None; > > // The declaration must be a variable which is not declared 'const'. > VarDecl *var = dyn_cast<VarDecl>(DRE->getDecl()); > @@ -11965,7 +11965,7 @@ static bool captureInCapturedRegion(Capt > const bool BuildAndDiagnose, > QualType &CaptureType, > QualType &DeclRefType, > - const bool RefersToEnclosingLocal, > + const bool RefersToCapturedVariable, > Sema &S) { > > // By default, capture variables by reference. > @@ -11987,7 +11987,7 @@ static bool captureInCapturedRegion(Capt > Field->setAccess(AS_private); > RD->addDecl(Field); > > - CopyExpr = new (S.Context) DeclRefExpr(Var, RefersToEnclosingLocal, > + CopyExpr = new (S.Context) DeclRefExpr(Var, RefersToCapturedVariable, > DeclRefType, VK_LValue, Loc); > Var->setReferenced(true); > Var->markUsed(S.Context); > @@ -11995,7 +11995,7 @@ static bool captureInCapturedRegion(Capt > > // Actually capture the variable. > if (BuildAndDiagnose) > - RSI->addCapture(Var, /*isBlock*/false, ByRef, RefersToEnclosingLocal, > Loc, > + RSI->addCapture(Var, /*isBlock*/false, ByRef, > RefersToCapturedVariable, Loc, > SourceLocation(), CaptureType, CopyExpr); > > > @@ -12009,7 +12009,7 @@ static ExprResult addAsFieldToClosureTyp > VarDecl *Var, QualType FieldType, > QualType DeclRefType, > SourceLocation Loc, > - bool RefersToEnclosingLocal) { > + bool RefersToCapturedVariable) { > CXXRecordDecl *Lambda = LSI->Lambda; > > // Build the non-static data member. > @@ -12038,7 +12038,7 @@ static ExprResult addAsFieldToClosureTyp > // C++ [expr.prim.labda]p12: > // An entity captured by a lambda-expression is odr-used (3.2) in > // the scope containing the lambda-expression. > - Expr *Ref = new (S.Context) DeclRefExpr(Var, RefersToEnclosingLocal, > + Expr *Ref = new (S.Context) DeclRefExpr(Var, RefersToCapturedVariable, > DeclRefType, VK_LValue, Loc); > Var->setReferenced(true); > Var->markUsed(S.Context); > @@ -12132,7 +12132,7 @@ static bool captureInLambda(LambdaScopeI > const bool BuildAndDiagnose, > QualType &CaptureType, > QualType &DeclRefType, > - const bool RefersToEnclosingLocal, > + const bool RefersToCapturedVariable, > const Sema::TryCaptureKind Kind, > SourceLocation EllipsisLoc, > const bool IsTopScope, > @@ -12206,7 +12206,7 @@ static bool captureInLambda(LambdaScopeI > if (BuildAndDiagnose) { > ExprResult Result = addAsFieldToClosureType(S, LSI, Var, > CaptureType, DeclRefType, Loc, > - RefersToEnclosingLocal); > + RefersToCapturedVariable); > if (!Result.isInvalid()) > CopyExpr = Result.get(); > } > @@ -12227,7 +12227,7 @@ static bool captureInLambda(LambdaScopeI > > // Add the capture. > if (BuildAndDiagnose) > - LSI->addCapture(Var, /*IsBlock=*/false, ByRef, RefersToEnclosingLocal, > + LSI->addCapture(Var, /*IsBlock=*/false, ByRef, > RefersToCapturedVariable, > Loc, EllipsisLoc, CaptureType, CopyExpr); > > return true; > > Modified: cfe/trunk/lib/Sema/SemaOpenMP.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOpenMP.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaOpenMP.cpp (original) > +++ cfe/trunk/lib/Sema/SemaOpenMP.cpp Tue Dec 16 02:01:48 2014 > @@ -4166,11 +4166,12 @@ OMPClause *Sema::ActOnOpenMPPrivateClaus > if (VDPrivate->isInvalidDecl()) > continue; > CurContext->addDecl(VDPrivate); > - auto VDPrivateRefExpr = DeclRefExpr::Create( > - Context, /*QualifierLoc*/ NestedNameSpecifierLoc(), > - /*TemplateKWLoc*/ SourceLocation(), VDPrivate, > - /*isEnclosingLocal*/ false, /*NameLoc*/ SourceLocation(), > DE->getType(), > - /*VK*/ VK_LValue); > + auto VDPrivateRefExpr = > + DeclRefExpr::Create(Context, /*QualifierLoc*/ > NestedNameSpecifierLoc(), > + /*TemplateKWLoc*/ SourceLocation(), VDPrivate, > + /*RefersToCapturedVariable*/ false, > + /*NameLoc*/ SourceLocation(), DE->getType(), > + /*VK*/ VK_LValue); > > DSAStack->addDSA(VD, DE, OMPC_private); > Vars.push_back(DE); > @@ -4391,7 +4392,7 @@ OMPClause *Sema::ActOnOpenMPFirstprivate > VDInitRefExpr = DeclRefExpr::Create( > Context, /*QualifierLoc*/ NestedNameSpecifierLoc(), > /*TemplateKWLoc*/ SourceLocation(), VDInit, > - /*isEnclosingLocal*/ true, ELoc, Type, > + /*RefersToCapturedVariable*/ true, ELoc, Type, > /*VK*/ VK_LValue); > VDInit->setIsUsed(); > auto Init = DefaultLvalueConversion(VDInitRefExpr).get(); > @@ -4409,7 +4410,7 @@ OMPClause *Sema::ActOnOpenMPFirstprivate > VDPrivate, DefaultLvalueConversion( > DeclRefExpr::Create(Context, > NestedNameSpecifierLoc(), > SourceLocation(), > DE->getDecl(), > - /*isEnclosingLocal=*/true, > + > /*RefersToCapturedVariable=*/true, > DE->getExprLoc(), > DE->getType(), > /*VK=*/VK_LValue)).get(), > /*DirectInit=*/false, /*TypeMayContainAuto=*/false); > @@ -4425,7 +4426,7 @@ OMPClause *Sema::ActOnOpenMPFirstprivate > auto VDPrivateRefExpr = DeclRefExpr::Create( > Context, /*QualifierLoc*/ NestedNameSpecifierLoc(), > /*TemplateKWLoc*/ SourceLocation(), VDPrivate, > - /*isEnclosingLocal*/ false, DE->getLocStart(), DE->getType(), > + /*RefersToCapturedVariable*/ false, DE->getLocStart(), > DE->getType(), > /*VK*/ VK_LValue); > DSAStack->addDSA(VD, DE, OMPC_firstprivate); > Vars.push_back(DE); > > Modified: cfe/trunk/lib/Sema/SemaStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaStmt.cpp (original) > +++ cfe/trunk/lib/Sema/SemaStmt.cpp Tue Dec 16 02:01:48 2014 > @@ -2484,7 +2484,7 @@ VarDecl *Sema::getCopyElisionCandidate(Q > // - in a return statement in a function [where] ... > // ... the expression is the name of a non-volatile automatic object ... > DeclRefExpr *DR = dyn_cast<DeclRefExpr>(E->IgnoreParens()); > - if (!DR || DR->refersToEnclosingLocal()) > + if (!DR || DR->refersToCapturedVariable()) > return nullptr; > VarDecl *VD = dyn_cast<VarDecl>(DR->getDecl()); > if (!VD) > > Modified: cfe/trunk/lib/Serialization/ASTReaderStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderStmt.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTReaderStmt.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTReaderStmt.cpp Tue Dec 16 02:01:48 2014 > @@ -433,7 +433,7 @@ void ASTStmtReader::VisitDeclRefExpr(Dec > E->DeclRefExprBits.HasFoundDecl = Record[Idx++]; > E->DeclRefExprBits.HasTemplateKWAndArgsInfo = Record[Idx++]; > E->DeclRefExprBits.HadMultipleCandidates = Record[Idx++]; > - E->DeclRefExprBits.RefersToEnclosingLocal = Record[Idx++]; > + E->DeclRefExprBits.RefersToCapturedVariable = Record[Idx++]; > unsigned NumTemplateArgs = 0; > if (E->hasTemplateKWAndArgsInfo()) > NumTemplateArgs = Record[Idx++]; > > Modified: cfe/trunk/lib/Serialization/ASTWriterDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriterDecl.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTWriterDecl.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTWriterDecl.cpp Tue Dec 16 02:01:48 2014 > @@ -1842,7 +1842,8 @@ void ASTWriter::WriteDeclAbbrevs() { > Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); //GetDeclFound > Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); > //ExplicitTemplateArgs > Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); > //HadMultipleCandidates > - Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); > //RefersToEnclosingLocal > + Abv->Add( > + BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // > RefersToCapturedVariable > Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // DeclRef > Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Location > DeclRefExprAbbrev = Stream.EmitAbbrev(Abv); > > Modified: cfe/trunk/lib/Serialization/ASTWriterStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriterStmt.cpp?rev=224329&r1=224328&r2=224329&view=diff > > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTWriterStmt.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTWriterStmt.cpp Tue Dec 16 02:01:48 2014 > @@ -344,7 +344,7 @@ void ASTStmtWriter::VisitDeclRefExpr(Dec > Record.push_back(E->getDecl() != E->getFoundDecl()); > Record.push_back(E->hasTemplateKWAndArgsInfo()); > Record.push_back(E->hadMultipleCandidates()); > - Record.push_back(E->refersToEnclosingLocal()); > + Record.push_back(E->refersToCapturedVariable()); > > if (E->hasTemplateKWAndArgsInfo()) { > unsigned NumTemplateArgs = E->getNumTemplateArgs(); > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
