r224329 - Renamed RefersToEnclosingLocal bitfield to RefersToCapturedVariable.
Richard Smith
richard at metafoo.co.uk
Fri Jan 2 07:10:39 PST 2015
On Tue, Dec 16, 2014 at 12:01 AM, Alexey Bataev <a.bataev at hotmail.com>
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
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150102/038fcbf1/attachment.html>
More information about the cfe-commits
mailing list