forked from OSchip/llvm-project
[AST][NFC] Pass the AST context to one of the ctor of DeclRefExpr.
All of the other constructors already take a reference to the AST context. This avoids calling Decl::getASTContext in most cases. Additionally move the definition of the constructor from Expr.h to Expr.cpp since it is calling DeclRefExpr::computeDependence. NFC. llvm-svn: 349901
This commit is contained in:
parent
2c8ead823b
commit
5fc4db7579
|
@ -1086,20 +1086,10 @@ class DeclRefExpr final
|
|||
void computeDependence(const ASTContext &Ctx);
|
||||
|
||||
public:
|
||||
DeclRefExpr(ValueDecl *D, bool RefersToEnclosingVariableOrCapture, QualType T,
|
||||
DeclRefExpr(const ASTContext &Ctx, ValueDecl *D,
|
||||
bool RefersToEnclosingVariableOrCapture, QualType T,
|
||||
ExprValueKind VK, SourceLocation L,
|
||||
const DeclarationNameLoc &LocInfo = DeclarationNameLoc())
|
||||
: Expr(DeclRefExprClass, T, VK, OK_Ordinary, false, false, false, false),
|
||||
D(D), DNLoc(LocInfo) {
|
||||
DeclRefExprBits.HasQualifier = false;
|
||||
DeclRefExprBits.HasTemplateKWAndArgsInfo = false;
|
||||
DeclRefExprBits.HasFoundDecl = false;
|
||||
DeclRefExprBits.HadMultipleCandidates = false;
|
||||
DeclRefExprBits.RefersToEnclosingVariableOrCapture =
|
||||
RefersToEnclosingVariableOrCapture;
|
||||
DeclRefExprBits.Loc = L;
|
||||
computeDependence(D->getASTContext());
|
||||
}
|
||||
const DeclarationNameLoc &LocInfo = DeclarationNameLoc());
|
||||
|
||||
static DeclRefExpr *
|
||||
Create(const ASTContext &Context, NestedNameSpecifierLoc QualifierLoc,
|
||||
|
|
|
@ -4320,7 +4320,7 @@ TemplateArgument ASTContext::getInjectedTemplateArg(NamedDecl *Param) {
|
|||
Arg = TemplateArgument(ArgType);
|
||||
} else if (auto *NTTP = dyn_cast<NonTypeTemplateParmDecl>(Param)) {
|
||||
Expr *E = new (*this) DeclRefExpr(
|
||||
NTTP, /*enclosing*/false,
|
||||
*this, NTTP, /*enclosing*/ false,
|
||||
NTTP->getType().getNonLValueExprType(*this),
|
||||
Expr::getValueKindForType(NTTP->getType()), NTTP->getLocation());
|
||||
|
||||
|
|
|
@ -341,16 +341,31 @@ void DeclRefExpr::computeDependence(const ASTContext &Ctx) {
|
|||
ExprBits.ContainsUnexpandedParameterPack = true;
|
||||
}
|
||||
|
||||
DeclRefExpr::DeclRefExpr(const ASTContext &Ctx, ValueDecl *D,
|
||||
bool RefersToEnclosingVariableOrCapture, QualType T,
|
||||
ExprValueKind VK, SourceLocation L,
|
||||
const DeclarationNameLoc &LocInfo)
|
||||
: Expr(DeclRefExprClass, T, VK, OK_Ordinary, false, false, false, false),
|
||||
D(D), DNLoc(LocInfo) {
|
||||
DeclRefExprBits.HasQualifier = false;
|
||||
DeclRefExprBits.HasTemplateKWAndArgsInfo = false;
|
||||
DeclRefExprBits.HasFoundDecl = false;
|
||||
DeclRefExprBits.HadMultipleCandidates = false;
|
||||
DeclRefExprBits.RefersToEnclosingVariableOrCapture =
|
||||
RefersToEnclosingVariableOrCapture;
|
||||
DeclRefExprBits.Loc = L;
|
||||
computeDependence(Ctx);
|
||||
}
|
||||
|
||||
DeclRefExpr::DeclRefExpr(const ASTContext &Ctx,
|
||||
NestedNameSpecifierLoc QualifierLoc,
|
||||
SourceLocation TemplateKWLoc,
|
||||
ValueDecl *D, bool RefersToEnclosingVariableOrCapture,
|
||||
const DeclarationNameInfo &NameInfo,
|
||||
NamedDecl *FoundD,
|
||||
SourceLocation TemplateKWLoc, ValueDecl *D,
|
||||
bool RefersToEnclosingVariableOrCapture,
|
||||
const DeclarationNameInfo &NameInfo, NamedDecl *FoundD,
|
||||
const TemplateArgumentListInfo *TemplateArgs,
|
||||
QualType T, ExprValueKind VK)
|
||||
: Expr(DeclRefExprClass, T, VK, OK_Ordinary, false, false, false, false),
|
||||
D(D), DNLoc(NameInfo.getInfo()) {
|
||||
: Expr(DeclRefExprClass, T, VK, OK_Ordinary, false, false, false, false),
|
||||
D(D), DNLoc(NameInfo.getInfo()) {
|
||||
DeclRefExprBits.Loc = NameInfo.getLoc();
|
||||
DeclRefExprBits.HasQualifier = QualifierLoc ? 1 : 0;
|
||||
if (QualifierLoc) {
|
||||
|
|
|
@ -1939,7 +1939,8 @@ void BuildLockset::handleCall(const Expr *Exp, const NamedDecl *D,
|
|||
if (isScopedVar) {
|
||||
// Add the managing object as a dummy mutex, mapped to the underlying mutex.
|
||||
SourceLocation MLoc = VD->getLocation();
|
||||
DeclRefExpr DRE(VD, false, VD->getType(), VK_LValue, VD->getLocation());
|
||||
DeclRefExpr DRE(VD->getASTContext(), VD, false, VD->getType(), VK_LValue,
|
||||
VD->getLocation());
|
||||
// FIXME: does this store a pointer to DRE?
|
||||
CapabilityExpr Scp = Analyzer->SxBuilder.translateAttrExpr(&DRE, nullptr);
|
||||
|
||||
|
@ -2475,8 +2476,9 @@ void ThreadSafetyAnalyzer::runAnalysis(AnalysisDeclContext &AC) {
|
|||
|
||||
// Create a dummy expression,
|
||||
auto *VD = const_cast<VarDecl *>(AD.getVarDecl());
|
||||
DeclRefExpr DRE(VD, false, VD->getType().getNonReferenceType(),
|
||||
VK_LValue, AD.getTriggerStmt()->getEndLoc());
|
||||
DeclRefExpr DRE(VD->getASTContext(), VD, false,
|
||||
VD->getType().getNonReferenceType(), VK_LValue,
|
||||
AD.getTriggerStmt()->getEndLoc());
|
||||
LocksetBuilder.handleCall(&DRE, DD);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -128,7 +128,8 @@ CapabilityExpr SExprBuilder::translateAttrExpr(const Expr *AttrExp,
|
|||
// Hack to handle constructors, where self cannot be recovered from
|
||||
// the expression.
|
||||
if (SelfDecl && !Ctx.SelfArg) {
|
||||
DeclRefExpr SelfDRE(SelfDecl, false, SelfDecl->getType(), VK_LValue,
|
||||
DeclRefExpr SelfDRE(SelfDecl->getASTContext(), SelfDecl, false,
|
||||
SelfDecl->getType(), VK_LValue,
|
||||
SelfDecl->getLocation());
|
||||
Ctx.SelfArg = &SelfDRE;
|
||||
|
||||
|
|
|
@ -1075,7 +1075,7 @@ llvm::Value *CodeGenFunction::EmitBlockLiteral(const CGBlockInfo &blockInfo) {
|
|||
src = I->second;
|
||||
}
|
||||
} else {
|
||||
DeclRefExpr declRef(const_cast<VarDecl *>(variable),
|
||||
DeclRefExpr declRef(getContext(), const_cast<VarDecl *>(variable),
|
||||
/*RefersToEnclosingVariableOrCapture*/ CI.isNested(),
|
||||
type.getNonReferenceType(), VK_LValue,
|
||||
SourceLocation());
|
||||
|
@ -1149,7 +1149,7 @@ llvm::Value *CodeGenFunction::EmitBlockLiteral(const CGBlockInfo &blockInfo) {
|
|||
|
||||
// We use one of these or the other depending on whether the
|
||||
// reference is nested.
|
||||
DeclRefExpr declRef(const_cast<VarDecl *>(variable),
|
||||
DeclRefExpr declRef(getContext(), const_cast<VarDecl *>(variable),
|
||||
/*RefersToEnclosingVariableOrCapture*/ CI.isNested(),
|
||||
type, VK_LValue, SourceLocation());
|
||||
|
||||
|
|
|
@ -547,7 +547,7 @@ namespace {
|
|||
void Emit(CodeGenFunction &CGF, Flags flags) override {
|
||||
// Compute the address of the local variable, in case it's a
|
||||
// byref or something.
|
||||
DeclRefExpr DRE(const_cast<VarDecl*>(&Var), false,
|
||||
DeclRefExpr DRE(CGF.getContext(), const_cast<VarDecl *>(&Var), false,
|
||||
Var.getType(), VK_LValue, SourceLocation());
|
||||
llvm::Value *value = CGF.EmitLoadOfScalar(CGF.EmitDeclRefLValue(&DRE),
|
||||
SourceLocation());
|
||||
|
@ -565,7 +565,7 @@ namespace {
|
|||
: CleanupFn(CleanupFn), FnInfo(*Info), Var(*Var) {}
|
||||
|
||||
void Emit(CodeGenFunction &CGF, Flags flags) override {
|
||||
DeclRefExpr DRE(const_cast<VarDecl*>(&Var), false,
|
||||
DeclRefExpr DRE(CGF.getContext(), const_cast<VarDecl *>(&Var), false,
|
||||
Var.getType(), VK_LValue, SourceLocation());
|
||||
// Compute the address of the local variable, in case it's a byref
|
||||
// or something.
|
||||
|
|
|
@ -1125,8 +1125,9 @@ static void emitStructSetterCall(CodeGenFunction &CGF, ObjCMethodDecl *OMD,
|
|||
|
||||
// The second argument is the address of the parameter variable.
|
||||
ParmVarDecl *argVar = *OMD->param_begin();
|
||||
DeclRefExpr argRef(argVar, false, argVar->getType().getNonReferenceType(),
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr argRef(CGF.getContext(), argVar, false,
|
||||
argVar->getType().getNonReferenceType(), VK_LValue,
|
||||
SourceLocation());
|
||||
llvm::Value *argAddr = CGF.EmitLValue(&argRef).getPointer();
|
||||
argAddr = CGF.Builder.CreateBitCast(argAddr, CGF.Int8PtrTy);
|
||||
args.add(RValue::get(argAddr), CGF.getContext().VoidPtrTy);
|
||||
|
@ -1170,8 +1171,9 @@ static void emitCPPObjectAtomicSetterCall(CodeGenFunction &CGF,
|
|||
|
||||
// The second argument is the address of the parameter variable.
|
||||
ParmVarDecl *argVar = *OMD->param_begin();
|
||||
DeclRefExpr argRef(argVar, false, argVar->getType().getNonReferenceType(),
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr argRef(CGF.getContext(), argVar, false,
|
||||
argVar->getType().getNonReferenceType(), VK_LValue,
|
||||
SourceLocation());
|
||||
llvm::Value *argAddr = CGF.EmitLValue(&argRef).getPointer();
|
||||
argAddr = CGF.Builder.CreateBitCast(argAddr, CGF.Int8PtrTy);
|
||||
args.add(RValue::get(argAddr), CGF.getContext().VoidPtrTy);
|
||||
|
@ -1343,7 +1345,7 @@ CodeGenFunction::generateObjCSetterBody(const ObjCImplementationDecl *classImpl,
|
|||
|
||||
// Otherwise, fake up some ASTs and emit a normal assignment.
|
||||
ValueDecl *selfDecl = setterMethod->getSelfDecl();
|
||||
DeclRefExpr self(selfDecl, false, selfDecl->getType(),
|
||||
DeclRefExpr self(getContext(), selfDecl, false, selfDecl->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
ImplicitCastExpr selfLoad(ImplicitCastExpr::OnStack,
|
||||
selfDecl->getType(), CK_LValueToRValue, &self,
|
||||
|
@ -1354,7 +1356,8 @@ CodeGenFunction::generateObjCSetterBody(const ObjCImplementationDecl *classImpl,
|
|||
|
||||
ParmVarDecl *argDecl = *setterMethod->param_begin();
|
||||
QualType argType = argDecl->getType().getNonReferenceType();
|
||||
DeclRefExpr arg(argDecl, false, argType, VK_LValue, SourceLocation());
|
||||
DeclRefExpr arg(getContext(), argDecl, false, argType, VK_LValue,
|
||||
SourceLocation());
|
||||
ImplicitCastExpr argLoad(ImplicitCastExpr::OnStack,
|
||||
argType.getUnqualifiedType(), CK_LValueToRValue,
|
||||
&arg, VK_RValue);
|
||||
|
@ -1516,7 +1519,8 @@ void CodeGenFunction::GenerateObjCCtorDtorMethod(ObjCImplementationDecl *IMP,
|
|||
|
||||
llvm::Value *CodeGenFunction::LoadObjCSelf() {
|
||||
VarDecl *Self = cast<ObjCMethodDecl>(CurFuncDecl)->getSelfDecl();
|
||||
DeclRefExpr DRE(Self, /*is enclosing local*/ (CurFuncDecl != CurCodeDecl),
|
||||
DeclRefExpr DRE(getContext(), Self,
|
||||
/*is enclosing local*/ (CurFuncDecl != CurCodeDecl),
|
||||
Self->getType(), VK_LValue, SourceLocation());
|
||||
return EmitLoadOfScalar(EmitDeclRefLValue(&DRE), SourceLocation());
|
||||
}
|
||||
|
@ -1702,9 +1706,9 @@ void CodeGenFunction::EmitObjCForCollectionStmt(const ObjCForCollectionStmt &S){
|
|||
// Initialize the variable, in case it's a __block variable or something.
|
||||
EmitAutoVarInit(variable);
|
||||
|
||||
const VarDecl* D = cast<VarDecl>(SD->getSingleDecl());
|
||||
DeclRefExpr tempDRE(const_cast<VarDecl*>(D), false, D->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
const VarDecl *D = cast<VarDecl>(SD->getSingleDecl());
|
||||
DeclRefExpr tempDRE(getContext(), const_cast<VarDecl *>(D), false,
|
||||
D->getType(), VK_LValue, SourceLocation());
|
||||
elementLValue = EmitLValue(&tempDRE);
|
||||
elementType = D->getType();
|
||||
elementIsVariable = true;
|
||||
|
@ -3374,13 +3378,13 @@ CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(
|
|||
|
||||
StartFunction(FD, ReturnTy, Fn, FI, args);
|
||||
|
||||
DeclRefExpr DstExpr(&DstDecl, false, DestTy,
|
||||
VK_RValue, SourceLocation());
|
||||
DeclRefExpr DstExpr(getContext(), &DstDecl, false, DestTy, VK_RValue,
|
||||
SourceLocation());
|
||||
UnaryOperator DST(&DstExpr, UO_Deref, DestTy->getPointeeType(),
|
||||
VK_LValue, OK_Ordinary, SourceLocation(), false);
|
||||
|
||||
DeclRefExpr SrcExpr(&SrcDecl, false, SrcTy,
|
||||
VK_RValue, SourceLocation());
|
||||
DeclRefExpr SrcExpr(getContext(), &SrcDecl, false, SrcTy, VK_RValue,
|
||||
SourceLocation());
|
||||
UnaryOperator SRC(&SrcExpr, UO_Deref, SrcTy->getPointeeType(),
|
||||
VK_LValue, OK_Ordinary, SourceLocation(), false);
|
||||
|
||||
|
@ -3457,8 +3461,8 @@ CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(
|
|||
|
||||
StartFunction(FD, ReturnTy, Fn, FI, args);
|
||||
|
||||
DeclRefExpr SrcExpr(&SrcDecl, false, SrcTy,
|
||||
VK_RValue, SourceLocation());
|
||||
DeclRefExpr SrcExpr(getContext(), &SrcDecl, false, SrcTy, VK_RValue,
|
||||
SourceLocation());
|
||||
|
||||
UnaryOperator SRC(&SrcExpr, UO_Deref, SrcTy->getPointeeType(),
|
||||
VK_LValue, OK_Ordinary, SourceLocation(), false);
|
||||
|
@ -3483,8 +3487,8 @@ CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(
|
|||
CXXConstExpr->getConstructionKind(),
|
||||
SourceRange());
|
||||
|
||||
DeclRefExpr DstExpr(&DstDecl, false, DestTy,
|
||||
VK_RValue, SourceLocation());
|
||||
DeclRefExpr DstExpr(getContext(), &DstDecl, false, DestTy, VK_RValue,
|
||||
SourceLocation());
|
||||
|
||||
RValue DV = EmitAnyExpr(&DstExpr);
|
||||
CharUnits Alignment
|
||||
|
|
|
@ -353,7 +353,7 @@ public:
|
|||
if (VD->isLocalVarDeclOrParm())
|
||||
continue;
|
||||
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(VD),
|
||||
DeclRefExpr DRE(CGF.getContext(), const_cast<VarDecl *>(VD),
|
||||
/*RefersToEnclosingVariableOrCapture=*/false,
|
||||
VD->getType().getNonReferenceType(), VK_LValue,
|
||||
C.getLocation());
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
assert(VD == VD->getCanonicalDecl() &&
|
||||
"Canonical decl must be captured.");
|
||||
DeclRefExpr DRE(
|
||||
const_cast<VarDecl *>(VD),
|
||||
CGF.getContext(), const_cast<VarDecl *>(VD),
|
||||
isCapturedVar(CGF, VD) || (CGF.CapturedStmtInfo &&
|
||||
InlinedShareds.isGlobalVarCaptured(VD)),
|
||||
VD->getType().getNonReferenceType(), VK_LValue, C.getLocation());
|
||||
|
@ -191,7 +191,7 @@ public:
|
|||
auto *VD = C.getCapturedVar();
|
||||
assert(VD == VD->getCanonicalDecl() &&
|
||||
"Canonical decl must be captured.");
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(VD),
|
||||
DeclRefExpr DRE(CGF.getContext(), const_cast<VarDecl *>(VD),
|
||||
isCapturedVar(CGF, VD) ||
|
||||
(CGF.CapturedStmtInfo &&
|
||||
InlinedShareds.isGlobalVarCaptured(VD)),
|
||||
|
@ -222,7 +222,7 @@ LValue CodeGenFunction::EmitOMPSharedLValue(const Expr *E) {
|
|||
LambdaCaptureFields.lookup(OrigVD) ||
|
||||
(CapturedStmtInfo && CapturedStmtInfo->lookup(OrigVD)) ||
|
||||
(CurCodeDecl && isa<BlockDecl>(CurCodeDecl));
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(OrigVD), IsCaptured,
|
||||
DeclRefExpr DRE(getContext(), const_cast<VarDecl *>(OrigVD), IsCaptured,
|
||||
OrigDRE->getType(), VK_LValue, OrigDRE->getExprLoc());
|
||||
return EmitLValue(&DRE);
|
||||
}
|
||||
|
@ -763,7 +763,7 @@ bool CodeGenFunction::EmitOMPFirstprivateClause(const OMPExecutableDirective &D,
|
|||
const auto *VDInit =
|
||||
cast<VarDecl>(cast<DeclRefExpr>(*InitsRef)->getDecl());
|
||||
bool IsRegistered;
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(OrigVD),
|
||||
DeclRefExpr DRE(getContext(), const_cast<VarDecl *>(OrigVD),
|
||||
/*RefersToEnclosingVariableOrCapture=*/FD != nullptr,
|
||||
(*IRef)->getType(), VK_LValue, (*IRef)->getExprLoc());
|
||||
LValue OriginalLVal = EmitLValue(&DRE);
|
||||
|
@ -878,8 +878,8 @@ bool CodeGenFunction::EmitOMPCopyinClause(const OMPExecutableDirective &D) {
|
|||
getContext().getTargetInfo().isTLSSupported()) {
|
||||
assert(CapturedStmtInfo->lookup(VD) &&
|
||||
"Copyin threadprivates should have been captured!");
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(VD), true, (*IRef)->getType(),
|
||||
VK_LValue, (*IRef)->getExprLoc());
|
||||
DeclRefExpr DRE(getContext(), const_cast<VarDecl *>(VD), true,
|
||||
(*IRef)->getType(), VK_LValue, (*IRef)->getExprLoc());
|
||||
MasterAddr = EmitLValue(&DRE).getAddress();
|
||||
LocalDeclMap.erase(VD);
|
||||
} else {
|
||||
|
@ -953,11 +953,10 @@ bool CodeGenFunction::EmitOMPLastprivateClauseInit(
|
|||
const auto *DestVD =
|
||||
cast<VarDecl>(cast<DeclRefExpr>(*IDestRef)->getDecl());
|
||||
PrivateScope.addPrivate(DestVD, [this, OrigVD, IRef]() {
|
||||
DeclRefExpr DRE(
|
||||
const_cast<VarDecl *>(OrigVD),
|
||||
/*RefersToEnclosingVariableOrCapture=*/CapturedStmtInfo->lookup(
|
||||
OrigVD) != nullptr,
|
||||
(*IRef)->getType(), VK_LValue, (*IRef)->getExprLoc());
|
||||
DeclRefExpr DRE(getContext(), const_cast<VarDecl *>(OrigVD),
|
||||
/*RefersToEnclosingVariableOrCapture=*/
|
||||
CapturedStmtInfo->lookup(OrigVD) != nullptr,
|
||||
(*IRef)->getType(), VK_LValue, (*IRef)->getExprLoc());
|
||||
return EmitLValue(&DRE).getAddress();
|
||||
});
|
||||
// Check if the variable is also a firstprivate: in this case IInit is
|
||||
|
@ -1384,7 +1383,7 @@ bool CodeGenFunction::EmitOMPLinearClauseInit(const OMPLoopDirective &D) {
|
|||
dyn_cast<DeclRefExpr>(VD->getInit()->IgnoreImpCasts())) {
|
||||
AutoVarEmission Emission = EmitAutoVarAlloca(*VD);
|
||||
const auto *OrigVD = cast<VarDecl>(Ref->getDecl());
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(OrigVD),
|
||||
DeclRefExpr DRE(getContext(), const_cast<VarDecl *>(OrigVD),
|
||||
CapturedStmtInfo->lookup(OrigVD) != nullptr,
|
||||
VD->getInit()->getType(), VK_LValue,
|
||||
VD->getInit()->getExprLoc());
|
||||
|
@ -1429,7 +1428,7 @@ void CodeGenFunction::EmitOMPLinearClauseFinal(
|
|||
}
|
||||
}
|
||||
const auto *OrigVD = cast<VarDecl>(cast<DeclRefExpr>(*IC)->getDecl());
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(OrigVD),
|
||||
DeclRefExpr DRE(getContext(), const_cast<VarDecl *>(OrigVD),
|
||||
CapturedStmtInfo->lookup(OrigVD) != nullptr,
|
||||
(*IC)->getType(), VK_LValue, (*IC)->getExprLoc());
|
||||
Address OrigAddr = EmitLValue(&DRE).getAddress();
|
||||
|
@ -1497,7 +1496,7 @@ void CodeGenFunction::EmitOMPPrivateLoopCounters(
|
|||
if (LocalDeclMap.count(VD) || CapturedStmtInfo->lookup(VD) ||
|
||||
VD->hasGlobalStorage()) {
|
||||
(void)LoopScope.addPrivate(PrivateVD, [this, VD, E]() {
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(VD),
|
||||
DeclRefExpr DRE(getContext(), const_cast<VarDecl *>(VD),
|
||||
LocalDeclMap.count(VD) || CapturedStmtInfo->lookup(VD),
|
||||
E->getType(), VK_LValue, E->getExprLoc());
|
||||
return EmitLValue(&DRE).getAddress();
|
||||
|
@ -1644,7 +1643,7 @@ void CodeGenFunction::EmitOMPSimdFinal(
|
|||
if (CED) {
|
||||
OrigAddr = EmitLValue(CED->getInit()->IgnoreImpCasts()).getAddress();
|
||||
} else {
|
||||
DeclRefExpr DRE(const_cast<VarDecl *>(PrivateVD),
|
||||
DeclRefExpr DRE(getContext(), const_cast<VarDecl *>(PrivateVD),
|
||||
/*RefersToEnclosingVariableOrCapture=*/false,
|
||||
(*IPC)->getType(), VK_LValue, (*IPC)->getExprLoc());
|
||||
OrigAddr = EmitLValue(&DRE).getAddress();
|
||||
|
@ -2929,11 +2928,11 @@ void CodeGenFunction::EmitOMPTaskBasedDirective(
|
|||
CopyFn, CallArgs);
|
||||
for (const auto &Pair : LastprivateDstsOrigs) {
|
||||
const auto *OrigVD = cast<VarDecl>(Pair.second->getDecl());
|
||||
DeclRefExpr DRE(
|
||||
const_cast<VarDecl *>(OrigVD),
|
||||
/*RefersToEnclosingVariableOrCapture=*/CGF.CapturedStmtInfo->lookup(
|
||||
OrigVD) != nullptr,
|
||||
Pair.second->getType(), VK_LValue, Pair.second->getExprLoc());
|
||||
DeclRefExpr DRE(CGF.getContext(), const_cast<VarDecl *>(OrigVD),
|
||||
/*RefersToEnclosingVariableOrCapture=*/
|
||||
CGF.CapturedStmtInfo->lookup(OrigVD) != nullptr,
|
||||
Pair.second->getType(), VK_LValue,
|
||||
Pair.second->getExprLoc());
|
||||
Scope.addPrivate(Pair.first, [&CGF, &DRE]() {
|
||||
return CGF.EmitLValue(&DRE).getAddress();
|
||||
});
|
||||
|
|
|
@ -2096,8 +2096,8 @@ RewriteModernObjC::SynthesizeCallToFunctionDecl(FunctionDecl *FD,
|
|||
QualType msgSendType = FD->getType();
|
||||
|
||||
// Create a reference to the objc_msgSend() declaration.
|
||||
DeclRefExpr *DRE =
|
||||
new (Context) DeclRefExpr(FD, false, msgSendType, VK_LValue, SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(*Context, FD, false, msgSendType,
|
||||
VK_LValue, SourceLocation());
|
||||
|
||||
// Now, we cast the reference to a pointer to the objc_msgSend type.
|
||||
QualType pToFunc = Context->getPointerType(msgSendType);
|
||||
|
@ -2584,12 +2584,11 @@ Stmt *RewriteModernObjC::RewriteObjCStringLiteral(ObjCStringLiteral *Exp) {
|
|||
VarDecl *NewVD = VarDecl::Create(*Context, TUDecl, SourceLocation(),
|
||||
SourceLocation(), &Context->Idents.get(S),
|
||||
strType, nullptr, SC_Static);
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(NewVD, false, strType, VK_LValue,
|
||||
SourceLocation());
|
||||
Expr *Unop = new (Context) UnaryOperator(DRE, UO_AddrOf,
|
||||
Context->getPointerType(DRE->getType()),
|
||||
VK_RValue, OK_Ordinary,
|
||||
SourceLocation(), false);
|
||||
DeclRefExpr *DRE = new (Context)
|
||||
DeclRefExpr(*Context, NewVD, false, strType, VK_LValue, SourceLocation());
|
||||
Expr *Unop = new (Context)
|
||||
UnaryOperator(DRE, UO_AddrOf, Context->getPointerType(DRE->getType()),
|
||||
VK_RValue, OK_Ordinary, SourceLocation(), false);
|
||||
// cast to NSConstantString *
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(Context, Exp->getType(),
|
||||
CK_CPointerToObjCPointerCast, Unop);
|
||||
|
@ -2673,12 +2672,11 @@ Stmt *RewriteModernObjC::RewriteObjCBoxedExpr(ObjCBoxedExpr *Exp) {
|
|||
QualType msgSendType = MsgSendFlavor->getType();
|
||||
|
||||
// Create a reference to the objc_msgSend() declaration.
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(MsgSendFlavor, false, msgSendType,
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(
|
||||
*Context, MsgSendFlavor, false, msgSendType, VK_LValue, SourceLocation());
|
||||
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(Context,
|
||||
Context->getPointerType(Context->VoidTy),
|
||||
CK_BitCast, DRE);
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(
|
||||
Context, Context->getPointerType(Context->VoidTy), CK_BitCast, DRE);
|
||||
|
||||
// Now do the "normal" pointer to function cast.
|
||||
QualType castType =
|
||||
|
@ -2717,9 +2715,8 @@ Stmt *RewriteModernObjC::RewriteObjCArrayLiteralExpr(ObjCArrayLiteral *Exp) {
|
|||
getSimpleFunctionType(Context->VoidTy, IntQT, true);
|
||||
std::string NSArrayFName("__NSContainer_literal");
|
||||
FunctionDecl *NSArrayFD = SynthBlockInitFunctionDecl(NSArrayFName);
|
||||
DeclRefExpr *NSArrayDRE =
|
||||
new (Context) DeclRefExpr(NSArrayFD, false, NSArrayFType, VK_RValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *NSArrayDRE = new (Context) DeclRefExpr(
|
||||
*Context, NSArrayFD, false, NSArrayFType, VK_RValue, SourceLocation());
|
||||
|
||||
SmallVector<Expr*, 16> InitExprs;
|
||||
unsigned NumElements = Exp->getNumElements();
|
||||
|
@ -2796,12 +2793,11 @@ Stmt *RewriteModernObjC::RewriteObjCArrayLiteralExpr(ObjCArrayLiteral *Exp) {
|
|||
QualType msgSendType = MsgSendFlavor->getType();
|
||||
|
||||
// Create a reference to the objc_msgSend() declaration.
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(MsgSendFlavor, false, msgSendType,
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(
|
||||
*Context, MsgSendFlavor, false, msgSendType, VK_LValue, SourceLocation());
|
||||
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(Context,
|
||||
Context->getPointerType(Context->VoidTy),
|
||||
CK_BitCast, DRE);
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(
|
||||
Context, Context->getPointerType(Context->VoidTy), CK_BitCast, DRE);
|
||||
|
||||
// Now do the "normal" pointer to function cast.
|
||||
QualType castType =
|
||||
|
@ -2840,9 +2836,8 @@ Stmt *RewriteModernObjC::RewriteObjCDictionaryLiteralExpr(ObjCDictionaryLiteral
|
|||
getSimpleFunctionType(Context->VoidTy, IntQT, true);
|
||||
std::string NSDictFName("__NSContainer_literal");
|
||||
FunctionDecl *NSDictFD = SynthBlockInitFunctionDecl(NSDictFName);
|
||||
DeclRefExpr *NSDictDRE =
|
||||
new (Context) DeclRefExpr(NSDictFD, false, NSDictFType, VK_RValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *NSDictDRE = new (Context) DeclRefExpr(
|
||||
*Context, NSDictFD, false, NSDictFType, VK_RValue, SourceLocation());
|
||||
|
||||
SmallVector<Expr*, 16> KeyExprs;
|
||||
SmallVector<Expr*, 16> ValueExprs;
|
||||
|
@ -2950,12 +2945,11 @@ Stmt *RewriteModernObjC::RewriteObjCDictionaryLiteralExpr(ObjCDictionaryLiteral
|
|||
QualType msgSendType = MsgSendFlavor->getType();
|
||||
|
||||
// Create a reference to the objc_msgSend() declaration.
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(MsgSendFlavor, false, msgSendType,
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(
|
||||
*Context, MsgSendFlavor, false, msgSendType, VK_LValue, SourceLocation());
|
||||
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(Context,
|
||||
Context->getPointerType(Context->VoidTy),
|
||||
CK_BitCast, DRE);
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(
|
||||
Context, Context->getPointerType(Context->VoidTy), CK_BitCast, DRE);
|
||||
|
||||
// Now do the "normal" pointer to function cast.
|
||||
QualType castType =
|
||||
|
@ -3178,8 +3172,8 @@ Expr *RewriteModernObjC::SynthMsgSendStretCallExpr(FunctionDecl *MsgSendStretFla
|
|||
FunctionDecl *FD =
|
||||
FunctionDecl::Create(*Context, TUDecl, SourceLocation(), SourceLocation(),
|
||||
ID, FuncType, nullptr, SC_Extern, false, false);
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(FD, false, castType, VK_RValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(*Context, FD, false, castType,
|
||||
VK_RValue, SourceLocation());
|
||||
CallExpr *STCE = new (Context) CallExpr(*Context, DRE, MsgExprs,
|
||||
castType, VK_LValue, SourceLocation());
|
||||
|
||||
|
@ -3247,7 +3241,8 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
InitExprs.push_back(
|
||||
NoTypeInfoCStyleCastExpr(Context, Context->getObjCIdType(),
|
||||
CK_BitCast,
|
||||
new (Context) DeclRefExpr(CurMethodDef->getSelfDecl(),
|
||||
new (Context) DeclRefExpr(*Context,
|
||||
CurMethodDef->getSelfDecl(),
|
||||
false,
|
||||
Context->getObjCIdType(),
|
||||
VK_RValue,
|
||||
|
@ -3278,9 +3273,9 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
if (LangOpts.MicrosoftExt) {
|
||||
SynthSuperConstructorFunctionDecl();
|
||||
// Simulate a constructor call...
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(SuperConstructorFunctionDecl,
|
||||
false, superType, VK_LValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context)
|
||||
DeclRefExpr(*Context, SuperConstructorFunctionDecl, false, superType,
|
||||
VK_LValue, SourceLocation());
|
||||
SuperRep = new (Context) CallExpr(*Context, DRE, InitExprs,
|
||||
superType, VK_LValue,
|
||||
SourceLocation());
|
||||
|
@ -3343,7 +3338,8 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
InitExprs.push_back(
|
||||
NoTypeInfoCStyleCastExpr(Context, Context->getObjCIdType(),
|
||||
CK_BitCast,
|
||||
new (Context) DeclRefExpr(CurMethodDef->getSelfDecl(),
|
||||
new (Context) DeclRefExpr(*Context,
|
||||
CurMethodDef->getSelfDecl(),
|
||||
false,
|
||||
Context->getObjCIdType(),
|
||||
VK_RValue, SourceLocation()))
|
||||
|
@ -3373,7 +3369,8 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
if (LangOpts.MicrosoftExt) {
|
||||
SynthSuperConstructorFunctionDecl();
|
||||
// Simulate a constructor call...
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(SuperConstructorFunctionDecl,
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(*Context,
|
||||
SuperConstructorFunctionDecl,
|
||||
false, superType, VK_LValue,
|
||||
SourceLocation());
|
||||
SuperRep = new (Context) CallExpr(*Context, DRE, InitExprs,
|
||||
|
@ -3517,8 +3514,8 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
QualType msgSendType = MsgSendFlavor->getType();
|
||||
|
||||
// Create a reference to the objc_msgSend() declaration.
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(MsgSendFlavor, false, msgSendType,
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(
|
||||
*Context, MsgSendFlavor, false, msgSendType, VK_LValue, SourceLocation());
|
||||
|
||||
// Need to cast objc_msgSend to "void *" (to workaround a GCC bandaid).
|
||||
// If we don't do this cast, we get the following bizarre warning/note:
|
||||
|
@ -3595,10 +3592,9 @@ Stmt *RewriteModernObjC::RewriteObjCProtocolExpr(ObjCProtocolExpr *Exp) {
|
|||
VarDecl *VD = VarDecl::Create(*Context, TUDecl, SourceLocation(),
|
||||
SourceLocation(), ID, getProtocolType(),
|
||||
nullptr, SC_Extern);
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(VD, false, getProtocolType(),
|
||||
VK_LValue, SourceLocation());
|
||||
CastExpr *castExpr =
|
||||
NoTypeInfoCStyleCastExpr(
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(
|
||||
*Context, VD, false, getProtocolType(), VK_LValue, SourceLocation());
|
||||
CastExpr *castExpr = NoTypeInfoCStyleCastExpr(
|
||||
Context, Context->getPointerType(DRE->getType()), CK_BitCast, DRE);
|
||||
ReplaceStmt(Exp, castExpr);
|
||||
ProtocolExprDecls.insert(Exp->getProtocol()->getCanonicalDecl());
|
||||
|
@ -5285,15 +5281,15 @@ Stmt *RewriteModernObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
Tag += FuncName + "_block_impl_" + BlockNumber;
|
||||
|
||||
FD = SynthBlockInitFunctionDecl(Tag);
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(FD, false, FType, VK_RValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context)
|
||||
DeclRefExpr(*Context, FD, false, FType, VK_RValue, SourceLocation());
|
||||
|
||||
SmallVector<Expr*, 4> InitExprs;
|
||||
|
||||
// Initialize the block function.
|
||||
FD = SynthBlockInitFunctionDecl(Func);
|
||||
DeclRefExpr *Arg = new (Context) DeclRefExpr(FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr *Arg = new (Context) DeclRefExpr(
|
||||
*Context, FD, false, FD->getType(), VK_LValue, SourceLocation());
|
||||
CastExpr *castExpr = NoTypeInfoCStyleCastExpr(Context, Context->VoidPtrTy,
|
||||
CK_BitCast, Arg);
|
||||
InitExprs.push_back(castExpr);
|
||||
|
@ -5304,15 +5300,11 @@ Stmt *RewriteModernObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
VarDecl *NewVD = VarDecl::Create(
|
||||
*Context, TUDecl, SourceLocation(), SourceLocation(),
|
||||
&Context->Idents.get(DescData), Context->VoidPtrTy, nullptr, SC_Static);
|
||||
UnaryOperator *DescRefExpr =
|
||||
new (Context) UnaryOperator(new (Context) DeclRefExpr(NewVD, false,
|
||||
Context->VoidPtrTy,
|
||||
VK_LValue,
|
||||
SourceLocation()),
|
||||
UO_AddrOf,
|
||||
Context->getPointerType(Context->VoidPtrTy),
|
||||
VK_RValue, OK_Ordinary,
|
||||
SourceLocation(), false);
|
||||
UnaryOperator *DescRefExpr = new (Context) UnaryOperator(
|
||||
new (Context) DeclRefExpr(*Context, NewVD, false, Context->VoidPtrTy,
|
||||
VK_LValue, SourceLocation()),
|
||||
UO_AddrOf, Context->getPointerType(Context->VoidPtrTy), VK_RValue,
|
||||
OK_Ordinary, SourceLocation(), false);
|
||||
InitExprs.push_back(DescRefExpr);
|
||||
|
||||
// Add initializers for any closure decl refs.
|
||||
|
@ -5324,7 +5316,7 @@ Stmt *RewriteModernObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
if (isObjCType((*I)->getType())) {
|
||||
// FIXME: Conform to ABI ([[obj retain] autorelease]).
|
||||
FD = SynthBlockInitFunctionDecl((*I)->getName());
|
||||
Exp = new (Context) DeclRefExpr(FD, false, FD->getType(),
|
||||
Exp = new (Context) DeclRefExpr(*Context, FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
if (HasLocalVariableExternalStorage(*I)) {
|
||||
QualType QT = (*I)->getType();
|
||||
|
@ -5335,13 +5327,13 @@ Stmt *RewriteModernObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
}
|
||||
} else if (isTopLevelBlockPointerType((*I)->getType())) {
|
||||
FD = SynthBlockInitFunctionDecl((*I)->getName());
|
||||
Arg = new (Context) DeclRefExpr(FD, false, FD->getType(),
|
||||
Arg = new (Context) DeclRefExpr(*Context, FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
Exp = NoTypeInfoCStyleCastExpr(Context, Context->VoidPtrTy,
|
||||
CK_BitCast, Arg);
|
||||
} else {
|
||||
FD = SynthBlockInitFunctionDecl((*I)->getName());
|
||||
Exp = new (Context) DeclRefExpr(FD, false, FD->getType(),
|
||||
Exp = new (Context) DeclRefExpr(*Context, FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
if (HasLocalVariableExternalStorage(*I)) {
|
||||
QualType QT = (*I)->getType();
|
||||
|
@ -5370,8 +5362,8 @@ Stmt *RewriteModernObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
QualType castT = Context->getPointerType(Context->getTagDeclType(RD));
|
||||
|
||||
FD = SynthBlockInitFunctionDecl((*I)->getName());
|
||||
Exp = new (Context) DeclRefExpr(FD, false, FD->getType(), VK_LValue,
|
||||
SourceLocation());
|
||||
Exp = new (Context) DeclRefExpr(*Context, FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
bool isNestedCapturedVar = false;
|
||||
if (block)
|
||||
for (const auto &CI : block->captures()) {
|
||||
|
@ -7497,9 +7489,9 @@ Stmt *RewriteModernObjC::RewriteObjCIvarRefExpr(ObjCIvarRefExpr *IV) {
|
|||
SourceLocation(), &Context->Idents.get(IvarOffsetName),
|
||||
Context->UnsignedLongTy, nullptr,
|
||||
SC_Extern);
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(NewVD, false,
|
||||
Context->UnsignedLongTy, VK_LValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context)
|
||||
DeclRefExpr(*Context, NewVD, false, Context->UnsignedLongTy,
|
||||
VK_LValue, SourceLocation());
|
||||
BinaryOperator *addExpr =
|
||||
new (Context) BinaryOperator(castExpr, DRE, BO_Add,
|
||||
Context->getPointerType(Context->CharTy),
|
||||
|
|
|
@ -2009,7 +2009,7 @@ RewriteObjC::SynthesizeCallToFunctionDecl(FunctionDecl *FD,
|
|||
QualType msgSendType = FD->getType();
|
||||
|
||||
// Create a reference to the objc_msgSend() declaration.
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(FD, false, msgSendType,
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(*Context, FD, false, msgSendType,
|
||||
VK_LValue, SourceLocation());
|
||||
|
||||
// Now, we cast the reference to a pointer to the objc_msgSend type.
|
||||
|
@ -2506,12 +2506,11 @@ Stmt *RewriteObjC::RewriteObjCStringLiteral(ObjCStringLiteral *Exp) {
|
|||
VarDecl *NewVD = VarDecl::Create(*Context, TUDecl, SourceLocation(),
|
||||
SourceLocation(), &Context->Idents.get(S),
|
||||
strType, nullptr, SC_Static);
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(NewVD, false, strType, VK_LValue,
|
||||
SourceLocation());
|
||||
Expr *Unop = new (Context) UnaryOperator(DRE, UO_AddrOf,
|
||||
Context->getPointerType(DRE->getType()),
|
||||
VK_RValue, OK_Ordinary,
|
||||
SourceLocation(), false);
|
||||
DeclRefExpr *DRE = new (Context)
|
||||
DeclRefExpr(*Context, NewVD, false, strType, VK_LValue, SourceLocation());
|
||||
Expr *Unop = new (Context)
|
||||
UnaryOperator(DRE, UO_AddrOf, Context->getPointerType(DRE->getType()),
|
||||
VK_RValue, OK_Ordinary, SourceLocation(), false);
|
||||
// cast to NSConstantString *
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(Context, Exp->getType(),
|
||||
CK_CPointerToObjCPointerCast, Unop);
|
||||
|
@ -2589,9 +2588,9 @@ CallExpr *RewriteObjC::SynthMsgSendStretCallExpr(FunctionDecl *MsgSendStretFlavo
|
|||
SmallVectorImpl<Expr*> &MsgExprs,
|
||||
ObjCMethodDecl *Method) {
|
||||
// Create a reference to the objc_msgSend_stret() declaration.
|
||||
DeclRefExpr *STDRE = new (Context) DeclRefExpr(MsgSendStretFlavor,
|
||||
false, msgSendType,
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr *STDRE =
|
||||
new (Context) DeclRefExpr(*Context, MsgSendStretFlavor, false,
|
||||
msgSendType, VK_LValue, SourceLocation());
|
||||
// Need to cast objc_msgSend_stret to "void *" (see above comment).
|
||||
CastExpr *cast = NoTypeInfoCStyleCastExpr(Context,
|
||||
Context->getPointerType(Context->VoidTy),
|
||||
|
@ -2664,7 +2663,8 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
InitExprs.push_back(
|
||||
NoTypeInfoCStyleCastExpr(Context, Context->getObjCIdType(),
|
||||
CK_BitCast,
|
||||
new (Context) DeclRefExpr(CurMethodDef->getSelfDecl(),
|
||||
new (Context) DeclRefExpr(*Context,
|
||||
CurMethodDef->getSelfDecl(),
|
||||
false,
|
||||
Context->getObjCIdType(),
|
||||
VK_RValue,
|
||||
|
@ -2697,9 +2697,9 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
if (LangOpts.MicrosoftExt) {
|
||||
SynthSuperConstructorFunctionDecl();
|
||||
// Simulate a constructor call...
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(SuperConstructorFunctionDecl,
|
||||
false, superType, VK_LValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context)
|
||||
DeclRefExpr(*Context, SuperConstructorFunctionDecl, false, superType,
|
||||
VK_LValue, SourceLocation());
|
||||
SuperRep = new (Context) CallExpr(*Context, DRE, InitExprs,
|
||||
superType, VK_LValue,
|
||||
SourceLocation());
|
||||
|
@ -2759,7 +2759,8 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
InitExprs.push_back(
|
||||
NoTypeInfoCStyleCastExpr(Context, Context->getObjCIdType(),
|
||||
CK_BitCast,
|
||||
new (Context) DeclRefExpr(CurMethodDef->getSelfDecl(),
|
||||
new (Context) DeclRefExpr(*Context,
|
||||
CurMethodDef->getSelfDecl(),
|
||||
false,
|
||||
Context->getObjCIdType(),
|
||||
VK_RValue, SourceLocation()))
|
||||
|
@ -2792,9 +2793,9 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
if (LangOpts.MicrosoftExt) {
|
||||
SynthSuperConstructorFunctionDecl();
|
||||
// Simulate a constructor call...
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(SuperConstructorFunctionDecl,
|
||||
false, superType, VK_LValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context)
|
||||
DeclRefExpr(*Context, SuperConstructorFunctionDecl, false, superType,
|
||||
VK_LValue, SourceLocation());
|
||||
SuperRep = new (Context) CallExpr(*Context, DRE, InitExprs,
|
||||
superType, VK_LValue, SourceLocation());
|
||||
// The code for super is a little tricky to prevent collision with
|
||||
|
@ -2936,8 +2937,8 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
QualType msgSendType = MsgSendFlavor->getType();
|
||||
|
||||
// Create a reference to the objc_msgSend() declaration.
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(MsgSendFlavor, false, msgSendType,
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(
|
||||
*Context, MsgSendFlavor, false, msgSendType, VK_LValue, SourceLocation());
|
||||
|
||||
// Need to cast objc_msgSend to "void *" (to workaround a GCC bandaid).
|
||||
// If we don't do this cast, we get the following bizarre warning/note:
|
||||
|
@ -3041,8 +3042,8 @@ Stmt *RewriteObjC::RewriteObjCProtocolExpr(ObjCProtocolExpr *Exp) {
|
|||
VarDecl *VD = VarDecl::Create(*Context, TUDecl, SourceLocation(),
|
||||
SourceLocation(), ID, getProtocolType(),
|
||||
nullptr, SC_Extern);
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(VD, false, getProtocolType(),
|
||||
VK_LValue, SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(
|
||||
*Context, VD, false, getProtocolType(), VK_LValue, SourceLocation());
|
||||
Expr *DerefExpr = new (Context) UnaryOperator(DRE, UO_AddrOf,
|
||||
Context->getPointerType(DRE->getType()),
|
||||
VK_RValue, OK_Ordinary, SourceLocation(), false);
|
||||
|
@ -4411,17 +4412,17 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
|
||||
// Simulate a constructor call...
|
||||
FD = SynthBlockInitFunctionDecl(Tag);
|
||||
DeclRefExpr *DRE = new (Context) DeclRefExpr(FD, false, FType, VK_RValue,
|
||||
SourceLocation());
|
||||
DeclRefExpr *DRE = new (Context)
|
||||
DeclRefExpr(*Context, FD, false, FType, VK_RValue, SourceLocation());
|
||||
|
||||
SmallVector<Expr*, 4> InitExprs;
|
||||
|
||||
// Initialize the block function.
|
||||
FD = SynthBlockInitFunctionDecl(Func);
|
||||
DeclRefExpr *Arg = new (Context) DeclRefExpr(FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
CastExpr *castExpr = NoTypeInfoCStyleCastExpr(Context, Context->VoidPtrTy,
|
||||
CK_BitCast, Arg);
|
||||
DeclRefExpr *Arg = new (Context) DeclRefExpr(
|
||||
*Context, FD, false, FD->getType(), VK_LValue, SourceLocation());
|
||||
CastExpr *castExpr =
|
||||
NoTypeInfoCStyleCastExpr(Context, Context->VoidPtrTy, CK_BitCast, Arg);
|
||||
InitExprs.push_back(castExpr);
|
||||
|
||||
// Initialize the block descriptor.
|
||||
|
@ -4430,15 +4431,11 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
VarDecl *NewVD = VarDecl::Create(
|
||||
*Context, TUDecl, SourceLocation(), SourceLocation(),
|
||||
&Context->Idents.get(DescData), Context->VoidPtrTy, nullptr, SC_Static);
|
||||
UnaryOperator *DescRefExpr =
|
||||
new (Context) UnaryOperator(new (Context) DeclRefExpr(NewVD, false,
|
||||
Context->VoidPtrTy,
|
||||
VK_LValue,
|
||||
SourceLocation()),
|
||||
UO_AddrOf,
|
||||
Context->getPointerType(Context->VoidPtrTy),
|
||||
VK_RValue, OK_Ordinary,
|
||||
SourceLocation(), false);
|
||||
UnaryOperator *DescRefExpr = new (Context) UnaryOperator(
|
||||
new (Context) DeclRefExpr(*Context, NewVD, false, Context->VoidPtrTy,
|
||||
VK_LValue, SourceLocation()),
|
||||
UO_AddrOf, Context->getPointerType(Context->VoidPtrTy), VK_RValue,
|
||||
OK_Ordinary, SourceLocation(), false);
|
||||
InitExprs.push_back(DescRefExpr);
|
||||
|
||||
// Add initializers for any closure decl refs.
|
||||
|
@ -4450,8 +4447,8 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
if (isObjCType((*I)->getType())) {
|
||||
// FIXME: Conform to ABI ([[obj retain] autorelease]).
|
||||
FD = SynthBlockInitFunctionDecl((*I)->getName());
|
||||
Exp = new (Context) DeclRefExpr(FD, false, FD->getType(), VK_LValue,
|
||||
SourceLocation());
|
||||
Exp = new (Context) DeclRefExpr(*Context, FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
if (HasLocalVariableExternalStorage(*I)) {
|
||||
QualType QT = (*I)->getType();
|
||||
QT = Context->getPointerType(QT);
|
||||
|
@ -4461,14 +4458,14 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
}
|
||||
} else if (isTopLevelBlockPointerType((*I)->getType())) {
|
||||
FD = SynthBlockInitFunctionDecl((*I)->getName());
|
||||
Arg = new (Context) DeclRefExpr(FD, false, FD->getType(), VK_LValue,
|
||||
SourceLocation());
|
||||
Exp = NoTypeInfoCStyleCastExpr(Context, Context->VoidPtrTy,
|
||||
CK_BitCast, Arg);
|
||||
Arg = new (Context) DeclRefExpr(*Context, FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
Exp = NoTypeInfoCStyleCastExpr(Context, Context->VoidPtrTy, CK_BitCast,
|
||||
Arg);
|
||||
} else {
|
||||
FD = SynthBlockInitFunctionDecl((*I)->getName());
|
||||
Exp = new (Context) DeclRefExpr(FD, false, FD->getType(), VK_LValue,
|
||||
SourceLocation());
|
||||
Exp = new (Context) DeclRefExpr(*Context, FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
if (HasLocalVariableExternalStorage(*I)) {
|
||||
QualType QT = (*I)->getType();
|
||||
QT = Context->getPointerType(QT);
|
||||
|
@ -4495,8 +4492,8 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,
|
|||
QualType castT = Context->getPointerType(Context->getTagDeclType(RD));
|
||||
|
||||
FD = SynthBlockInitFunctionDecl((*I)->getName());
|
||||
Exp = new (Context) DeclRefExpr(FD, false, FD->getType(), VK_LValue,
|
||||
SourceLocation());
|
||||
Exp = new (Context) DeclRefExpr(*Context, FD, false, FD->getType(),
|
||||
VK_LValue, SourceLocation());
|
||||
bool isNestedCapturedVar = false;
|
||||
if (block)
|
||||
for (const auto &CI : block->captures()) {
|
||||
|
|
|
@ -1415,7 +1415,8 @@ static void checkEscapingByref(VarDecl *VD, Sema &S) {
|
|||
EnterExpressionEvaluationContext scope(
|
||||
S, Sema::ExpressionEvaluationContext::PotentiallyEvaluated);
|
||||
SourceLocation Loc = VD->getLocation();
|
||||
Expr *VarRef = new (S.Context) DeclRefExpr(VD, false, T, VK_LValue, Loc);
|
||||
Expr *VarRef =
|
||||
new (S.Context) DeclRefExpr(S.Context, VD, false, T, VK_LValue, Loc);
|
||||
ExprResult Result = S.PerformMoveOrCopyInitialization(
|
||||
InitializedEntity::InitializeBlock(Loc, T, false), VD, VD->getType(),
|
||||
VarRef, /*AllowNRVO=*/true);
|
||||
|
|
|
@ -48,7 +48,7 @@ ExprResult Sema::ActOnCUDAExecConfigExpr(Scope *S, SourceLocation LLLLoc,
|
|||
QualType ConfigQTy = ConfigDecl->getType();
|
||||
|
||||
DeclRefExpr *ConfigDR = new (Context)
|
||||
DeclRefExpr(ConfigDecl, false, ConfigQTy, VK_LValue, LLLLoc);
|
||||
DeclRefExpr(Context, ConfigDecl, false, ConfigQTy, VK_LValue, LLLLoc);
|
||||
MarkFunctionReferenced(LLLLoc, ConfigDecl);
|
||||
|
||||
return ActOnCallExpr(S, ConfigDR, LLLLoc, ExecConfig, GGGLoc, nullptr,
|
||||
|
|
|
@ -15044,9 +15044,8 @@ static bool captureInBlock(BlockScopeInfo *BSI, VarDecl *Var,
|
|||
// According to the blocks spec, the capture of a variable from
|
||||
// the stack requires a const copy constructor. This is not true
|
||||
// of the copy/move done to move a __block variable to the heap.
|
||||
Expr *DeclRef = new (S.Context) DeclRefExpr(Var, Nested,
|
||||
DeclRefType.withConst(),
|
||||
VK_LValue, Loc);
|
||||
Expr *DeclRef = new (S.Context) DeclRefExpr(
|
||||
S.Context, Var, Nested, DeclRefType.withConst(), VK_LValue, Loc);
|
||||
|
||||
ExprResult Result
|
||||
= S.PerformCopyInitialization(
|
||||
|
@ -15122,8 +15121,8 @@ static bool captureInCapturedRegion(CapturedRegionScopeInfo *RSI,
|
|||
if (S.getLangOpts().OpenMP && RSI->CapRegionKind == CR_OpenMP)
|
||||
S.setOpenMPCaptureKind(Field, Var, RSI->OpenMPLevel);
|
||||
|
||||
CopyExpr = new (S.Context) DeclRefExpr(Var, RefersToCapturedVariable,
|
||||
DeclRefType, VK_LValue, Loc);
|
||||
CopyExpr = new (S.Context) DeclRefExpr(
|
||||
S.Context, Var, RefersToCapturedVariable, DeclRefType, VK_LValue, Loc);
|
||||
Var->setReferenced(true);
|
||||
Var->markUsed(S.Context);
|
||||
}
|
||||
|
|
|
@ -1412,9 +1412,9 @@ Decl *Sema::ActOnPropertyImplDecl(Scope *S,
|
|||
// FIXME. Eventually we want to do this for Objective-C as well.
|
||||
SynthesizedFunctionScope Scope(*this, getterMethod);
|
||||
ImplicitParamDecl *SelfDecl = getterMethod->getSelfDecl();
|
||||
DeclRefExpr *SelfExpr =
|
||||
new (Context) DeclRefExpr(SelfDecl, false, SelfDecl->getType(),
|
||||
VK_LValue, PropertyDiagLoc);
|
||||
DeclRefExpr *SelfExpr = new (Context)
|
||||
DeclRefExpr(Context, SelfDecl, false, SelfDecl->getType(), VK_LValue,
|
||||
PropertyDiagLoc);
|
||||
MarkDeclRefReferenced(SelfExpr);
|
||||
Expr *LoadSelfExpr =
|
||||
ImplicitCastExpr::Create(Context, SelfDecl->getType(),
|
||||
|
@ -1464,9 +1464,9 @@ Decl *Sema::ActOnPropertyImplDecl(Scope *S,
|
|||
// FIXME. Eventually we want to do this for Objective-C as well.
|
||||
SynthesizedFunctionScope Scope(*this, setterMethod);
|
||||
ImplicitParamDecl *SelfDecl = setterMethod->getSelfDecl();
|
||||
DeclRefExpr *SelfExpr =
|
||||
new (Context) DeclRefExpr(SelfDecl, false, SelfDecl->getType(),
|
||||
VK_LValue, PropertyDiagLoc);
|
||||
DeclRefExpr *SelfExpr = new (Context)
|
||||
DeclRefExpr(Context, SelfDecl, false, SelfDecl->getType(), VK_LValue,
|
||||
PropertyDiagLoc);
|
||||
MarkDeclRefReferenced(SelfExpr);
|
||||
Expr *LoadSelfExpr =
|
||||
ImplicitCastExpr::Create(Context, SelfDecl->getType(),
|
||||
|
@ -1481,8 +1481,8 @@ Decl *Sema::ActOnPropertyImplDecl(Scope *S,
|
|||
ObjCMethodDecl::param_iterator P = setterMethod->param_begin();
|
||||
ParmVarDecl *Param = (*P);
|
||||
QualType T = Param->getType().getNonReferenceType();
|
||||
DeclRefExpr *rhs = new (Context) DeclRefExpr(Param, false, T,
|
||||
VK_LValue, PropertyDiagLoc);
|
||||
DeclRefExpr *rhs = new (Context)
|
||||
DeclRefExpr(Context, Param, false, T, VK_LValue, PropertyDiagLoc);
|
||||
MarkDeclRefReferenced(rhs);
|
||||
ExprResult Res = BuildBinOp(S, PropertyDiagLoc,
|
||||
BO_Assign, lhs, rhs);
|
||||
|
|
|
@ -63,8 +63,8 @@ CreateFunctionRefExpr(Sema &S, FunctionDecl *Fn, NamedDecl *FoundDecl,
|
|||
return ExprError();
|
||||
if (auto *FPT = Fn->getType()->getAs<FunctionProtoType>())
|
||||
S.ResolveExceptionSpec(Loc, FPT);
|
||||
DeclRefExpr *DRE = new (S.Context) DeclRefExpr(Fn, false, Fn->getType(),
|
||||
VK_LValue, Loc, LocInfo);
|
||||
DeclRefExpr *DRE = new (S.Context)
|
||||
DeclRefExpr(S.Context, Fn, false, Fn->getType(), VK_LValue, Loc, LocInfo);
|
||||
if (HadMultipleCandidates)
|
||||
DRE->setHadMultipleCandidates(true);
|
||||
|
||||
|
@ -6983,8 +6983,8 @@ Sema::AddConversionCandidate(CXXConversionDecl *Conversion,
|
|||
// lvalues/rvalues and the type. Fortunately, we can allocate this
|
||||
// call on the stack and we don't need its arguments to be
|
||||
// well-formed.
|
||||
DeclRefExpr ConversionRef(Conversion, false, Conversion->getType(), VK_LValue,
|
||||
From->getBeginLoc());
|
||||
DeclRefExpr ConversionRef(Context, Conversion, false, Conversion->getType(),
|
||||
VK_LValue, From->getBeginLoc());
|
||||
ImplicitCastExpr ConversionFn(ImplicitCastExpr::OnStack,
|
||||
Context.getPointerType(Conversion->getType()),
|
||||
CK_FunctionToPointerDecay,
|
||||
|
|
|
@ -3130,9 +3130,9 @@ public:
|
|||
|
||||
// Build a reference to the __builtin_shufflevector builtin
|
||||
FunctionDecl *Builtin = cast<FunctionDecl>(Lookup.front());
|
||||
Expr *Callee = new (SemaRef.Context) DeclRefExpr(Builtin, false,
|
||||
SemaRef.Context.BuiltinFnTy,
|
||||
VK_RValue, BuiltinLoc);
|
||||
Expr *Callee = new (SemaRef.Context)
|
||||
DeclRefExpr(SemaRef.Context, Builtin, false,
|
||||
SemaRef.Context.BuiltinFnTy, VK_RValue, BuiltinLoc);
|
||||
QualType CalleePtrTy = SemaRef.Context.getPointerType(Builtin->getType());
|
||||
Callee = SemaRef.ImpCastExprToType(Callee, CalleePtrTy,
|
||||
CK_BuiltinFnToFnPtr).get();
|
||||
|
|
Loading…
Reference in New Issue