Lines Matching defs:RefExpr
81 const Expr *RefExpr = nullptr;
87 const Expr *RefExpr, DeclRefExpr *PrivateCopy,
90 : DKind(DKind), CKind(CKind), Modifier(Modifier), RefExpr(RefExpr),
113 llvm::PointerIntPair<const Expr *, 1, bool> RefExpr;
143 void set(const Expr *RefExpr, SourceRange RR) {
145 ReductionOp = RefExpr;
1311 DVar.RefExpr = Data.RefExpr.getPointer();
1382 DVar.RefExpr = nullptr;
1489 Data.RefExpr.setPointer(E);
1500 Data.RefExpr.setInt(/*IntVal=*/true);
1506 Data.RefExpr.setPointerAndInt(E, IsLastprivate);
1513 Data.RefExpr.setPointerAndInt(PrivateCopy, IsLastprivate);
1622 return DSAVarData(I->Directive, OMPC_reduction, Data.RefExpr.getPointer(),
1649 return DSAVarData(I->Directive, OMPC_reduction, Data.RefExpr.getPointer(),
1729 DVar.RefExpr = TI->getSecond().RefExpr.getPointer();
1735 DVar.RefExpr = buildDeclRefExpr(
1739 addDSA(D, DVar.RefExpr, OMPC_threadprivate);
1751 DVar.RefExpr = buildDeclRefExpr(
1754 addDSA(D, DVar.RefExpr, OMPC_threadprivate);
1768 DVar.RefExpr =
1779 DVar.RefExpr = DSAIter->getSecond().RefExpr.getPointer();
1787 DVar.RefExpr =
1818 DVar.RefExpr = Data.RefExpr.getPointer();
1850 if (DVarTemp.CKind != OMPC_unknown && DVarTemp.RefExpr)
1869 DVar.RefExpr = Data.RefExpr.getPointer();
1959 if (I != StackElem.SharingMap.end() && I->getSecond().RefExpr.getPointer() &&
1961 (!NotLastprivate || !I->getSecond().RefExpr.getInt()))
2349 if (DVarTop.CKind != OMPC_unknown && DVarTop.RefExpr)
2544 !DSAStack->isLoopControlVariable(D, Level).first && !DVar.RefExpr) {
2773 getPrivateItem(Sema &S, Expr *&RefExpr, SourceLocation &ELoc,
2900 for (Expr *RefExpr : Clause->varlist()) {
2901 assert(RefExpr && "NULL expr in OpenMP nontemporal clause.");
2904 Expr *SimpleRefExpr = RefExpr;
2908 PrivateRefs.push_back(RefExpr);
2937 if (DVar.RefExpr ||
2956 if (DVar.RefExpr)
3235 for (Expr *RefExpr : VarList) {
3236 auto *DE = cast<DeclRefExpr>(RefExpr);
3297 Vars.push_back(RefExpr);
3340 Sema &S, DSAStackTy *Stack, Expr *RefExpr, VarDecl *VD,
3371 Allocator ? Allocator->getExprLoc() : RefExpr->getExprLoc();
3373 Allocator ? Allocator->getSourceRange() : RefExpr->getSourceRange();
3439 for (Expr *RefExpr : VarList) {
3440 auto *DE = cast<DeclRefExpr>(RefExpr);
3452 if (checkPreviousOMPAllocateAttribute(SemaRef, DSAStack, RefExpr, VD,
3474 Vars.push_back(RefExpr);
3615 if (DVar.RefExpr) {
3616 SemaRef.Diag(DVar.RefExpr->getExprLoc(), diag::note_omp_explicit_dsa)
3787 !Stack->getTopDSA(VD, /*FromParent=*/false).RefExpr &&
3811 if (DVar.RefExpr || !ImplicitDeclarations.insert(VD).second)
3966 !DVar.RefExpr)) &&
3995 if (DVar.RefExpr || !ImplicitDeclarations.insert(FD).second)
5130 static std::pair<ValueDecl *, bool> getPrivateItem(Sema &S, Expr *&RefExpr,
5135 if (RefExpr->isTypeDependent() || RefExpr->isValueDependent() ||
5136 RefExpr->containsUnexpandedParameterPack())
5144 RefExpr = RefExpr->IgnoreParens();
5151 if (auto *ASE = dyn_cast_or_null<ArraySubscriptExpr>(RefExpr)) {
5155 RefExpr = Base;
5157 } else if (auto *OASE = dyn_cast_or_null<ArraySectionExpr>(RefExpr)) {
5163 RefExpr = Base;
5167 ELoc = RefExpr->getExprLoc();
5168 ERange = RefExpr->getSourceRange();
5169 RefExpr = RefExpr->IgnoreParenImpCasts();
5170 auto *DE = dyn_cast_or_null<DeclRefExpr>(RefExpr);
5171 auto *ME = dyn_cast_or_null<MemberExpr>(RefExpr);
8994 if (!isOpenMPPrivate(Data.CKind) || !Data.RefExpr)
9116 DVar.CKind != PredeterminedCKind && DVar.RefExpr &&
9124 (DVar.CKind != OMPC_private || DVar.RefExpr)) {
9128 if (DVar.RefExpr == nullptr)
10587 for (Expr *RefExpr : LPC->varlist()) {
10590 Expr *SimpleRefExpr = RefExpr;
16854 Expr *RefExpr = InteropVarExpr;
16856 getPrivateItem(SemaRef, RefExpr, ELoc, ERange,
17293 for (Expr *RefExpr : VarList) {
17294 assert(RefExpr && "NULL expr in OpenMP private clause.");
17297 Expr *SimpleRefExpr = RefExpr;
17301 Vars.push_back(RefExpr);
17406 SemaRef, VDPrivate, RefExpr->getType().getUnqualifiedType(), ELoc);
17414 RefExpr->getExprLoc());
17419 DSAStack->addDSA(D, RefExpr->IgnoreParens(), OMPC_private, Ref);
17421 ? RefExpr->IgnoreParens()
17445 for (Expr *RefExpr : VarList) {
17446 assert(RefExpr && "NULL expr in OpenMP firstprivate clause.");
17449 Expr *SimpleRefExpr = RefExpr;
17453 Vars.push_back(RefExpr);
17498 DVar.RefExpr) {
17517 if (!(IsConstant || (VD && VD->isStaticDataMember())) && !DVar.RefExpr &&
17650 buildVarDecl(SemaRef, RefExpr->getExprLoc(), ElemType, D->getName());
17654 VarDecl *VDInitTemp = buildVarDecl(SemaRef, RefExpr->getExprLoc(),
17669 VarDecl *VDInit = buildVarDecl(SemaRef, RefExpr->getExprLoc(), Type,
17671 VDInitRefExpr = buildDeclRefExpr(SemaRef, VDInit, RefExpr->getType(),
17672 RefExpr->getExprLoc());
17679 Diag(RefExpr->getExprLoc(),
17686 SemaRef, VDPrivate, RefExpr->getType().getUnqualifiedType(),
17687 RefExpr->getExprLoc());
17698 RefExpr->getExprLoc());
17706 DSAStack->addDSA(D, RefExpr->IgnoreParens(), OMPC_firstprivate, Ref);
17708 ? RefExpr->IgnoreParens()
17741 for (Expr *RefExpr : VarList) {
17742 assert(RefExpr && "NULL expr in OpenMP lastprivate clause.");
17745 Expr *SimpleRefExpr = RefExpr;
17749 Vars.push_back(RefExpr);
17806 (DVar.CKind != OMPC_private || DVar.RefExpr != nullptr)) {
17887 DSAStack->addDSA(D, RefExpr->IgnoreParens(), OMPC_lastprivate, Ref);
17889 ? RefExpr->IgnoreParens()
17911 for (Expr *RefExpr : VarList) {
17912 assert(RefExpr && "NULL expr in OpenMP lastprivate clause.");
17915 Expr *SimpleRefExpr = RefExpr;
17919 Vars.push_back(RefExpr);
17935 DVar.RefExpr) {
17946 DSAStack->addDSA(D, RefExpr->IgnoreParens(), OMPC_shared, Ref);
17948 ? RefExpr->IgnoreParens()
17967 if (DVar.CKind == OMPC_shared && !DVar.RefExpr)
18513 for (Expr *RefExpr : VarList) {
18514 assert(RefExpr && "nullptr expr in OpenMP reduction clause.");
18527 Expr *SimpleRefExpr = RefExpr;
18544 RD.push(RefExpr, ReductionOp);
18552 auto *ASE = dyn_cast<ArraySubscriptExpr>(RefExpr->IgnoreParens());
18553 auto *OASE = dyn_cast<ArraySectionExpr>(RefExpr->IgnoreParens());
18615 if (DVar.RefExpr)
18616 S.Diag(DVar.RefExpr->getExprLoc(), diag::note_omp_referenced);
18667 RD.push(RefExpr, DeclareReductionRef.get());
19058 << ReductionIdRange << RefExpr->getSourceRange();
19062 << (IsParentBOK ? ParentBOKDSA.RefExpr
19063 : ParentReductionOpDSA.RefExpr)
19072 Expr *VarsExpr = RefExpr->IgnoreParens();
19077 RebuildToCapture.TransformExpr(RefExpr->IgnoreParens()).get();
19095 S.Diag(RefExpr->getExprLoc(),
19097 << RefExpr->getSourceRange();
19112 Stack->addDSA(D, RefExpr->IgnoreParens(), OMPC_reduction, Ref, Modifier,
19289 for (Expr *RefExpr : VarList) {
19290 assert(RefExpr && "NULL expr in OpenMP linear clause.");
19293 Expr *SimpleRefExpr = RefExpr;
19297 Vars.push_back(RefExpr);
19313 if (DVar.RefExpr) {
19361 DSAStack->addDSA(D, RefExpr->IgnoreParens(), OMPC_linear, Ref);
19363 ? RefExpr->IgnoreParens()
19433 for (Expr *RefExpr : Clause.varlist()) {
19436 Expr *SimpleRefExpr = RefExpr;
19475 SemaRef, S, RefExpr->getExprLoc(), *CurPrivate, InitExpr, IV, Step,
19486 S, RefExpr->getExprLoc(), BO_Assign, CapturedRef,
19521 for (Expr *RefExpr : VarList) {
19522 assert(RefExpr && "NULL expr in OpenMP linear clause.");
19525 Expr *SimpleRefExpr = RefExpr;
19529 Vars.push_back(RefExpr);
19569 (VD || !Ref) ? RefExpr->IgnoreParens() : Ref)
19600 for (Expr *RefExpr : VarList) {
19601 assert(RefExpr && "NULL expr in OpenMP copyin clause.");
19602 if (isa<DependentScopeDeclRefExpr>(RefExpr)) {
19604 Vars.push_back(RefExpr);
19611 SourceLocation ELoc = RefExpr->getExprLoc();
19616 auto *DE = dyn_cast<DeclRefExpr>(RefExpr);
19619 << 0 << RefExpr->getSourceRange();
19696 for (Expr *RefExpr : VarList) {
19697 assert(RefExpr && "NULL expr in OpenMP linear clause.");
19700 Expr *SimpleRefExpr = RefExpr;
19704 Vars.push_back(RefExpr);
19723 DVar.RefExpr) {
19767 buildVarDecl(SemaRef, RefExpr->getBeginLoc(), Type, ".copyprivate.src",
19771 buildVarDecl(SemaRef, RefExpr->getBeginLoc(), Type, ".copyprivate.dst",
19787 VD ? RefExpr->IgnoreParens()
19887 for (Expr *RefExpr : VarList) {
19888 assert(RefExpr && "NULL expr in OpenMP doacross clause.");
19889 if (isa<DependentScopeDeclRefExpr>(RefExpr)) {
19891 Vars.push_back(RefExpr);
19895 SourceLocation ELoc = RefExpr->getExprLoc();
19896 Expr *SimpleExpr = RefExpr->IgnoreParenCasts();
19914 Vars.push_back(RefExpr);
19946 Vars.push_back(RefExpr);
19978 Vars.push_back(RefExpr->IgnoreParenImpCasts());
20053 for (Expr *RefExpr : VarList) {
20054 assert(RefExpr && "NULL expr in OpenMP shared clause.");
20055 if (isa<DependentScopeDeclRefExpr>(RefExpr)) {
20057 Vars.push_back(RefExpr);
20061 SourceLocation ELoc = RefExpr->getExprLoc();
20062 Expr *SimpleExpr = RefExpr->IgnoreParenCasts();
20072 if (!RefExpr->isValueDependent() && !RefExpr->isTypeDependent() &&
20073 !RefExpr->isInstantiationDependent() &&
20074 !RefExpr->containsUnexpandedParameterPack() &&
20077 DSAStack->getOMPDependT(), RefExpr->getType()))) {
20079 << 0 << RefExpr->getType() << RefExpr->getSourceRange();
20082 if (!RefExpr->isLValue()) {
20084 << 1 << RefExpr->getType() << RefExpr->getSourceRange();
20091 QualType ExprTy = RefExpr->getType().getNonReferenceType();
20121 if (!RefExpr->isValueDependent() && !RefExpr->isTypeDependent() &&
20122 !RefExpr->isInstantiationDependent() &&
20123 !RefExpr->containsUnexpandedParameterPack() &&
20124 (!RefExpr->IgnoreParenImpCasts()->isLValue() ||
20130 << RefExpr->getSourceRange();
20144 << RefExpr->getSourceRange();
20152 RefExpr->IgnoreParenImpCasts());
20159 << RefExpr->getSourceRange();
20164 Vars.push_back(RefExpr->IgnoreParenImpCasts());
22335 DVar.RefExpr) {
22877 for (Expr *RefExpr : VarList) {
22878 assert(RefExpr && "NULL expr in OpenMP use_device_ptr clause.");
22881 Expr *SimpleRefExpr = RefExpr;
22885 MVLI.ProcessedVarList.push_back(RefExpr);
22901 << 0 << RefExpr->getSourceRange();
22915 SemaRef, VDPrivate, RefExpr->getType().getUnqualifiedType(), ELoc);
22919 buildVarDecl(SemaRef, RefExpr->getExprLoc(), Type, ".devptr.temp");
22921 SemaRef, VDInit, RefExpr->getType(), RefExpr->getExprLoc());
22931 MVLI.ProcessedVarList.push_back(VD ? RefExpr->IgnoreParens() : Ref);
22938 DSAStack->addDSA(D, RefExpr->IgnoreParens(), OMPC_firstprivate, Ref);
22961 for (Expr *RefExpr : VarList) {
22962 assert(RefExpr && "NULL expr in OpenMP use_device_addr clause.");
22965 Expr *SimpleRefExpr = RefExpr;
22970 MVLI.ProcessedVarList.push_back(RefExpr);
22982 MVLI.ProcessedVarList.push_back(VD ? RefExpr->IgnoreParens() : Ref);
22987 DSAStack->addDSA(D, RefExpr->IgnoreParens(), OMPC_firstprivate, Ref);
22994 if (VD && (isa<ArraySectionExpr>(RefExpr->IgnoreParenImpCasts()) ||
22995 isa<ArraySubscriptExpr>(RefExpr->IgnoreParenImpCasts())))
23014 for (Expr *RefExpr : VarList) {
23015 assert(RefExpr && "NULL expr in OpenMP is_device_ptr clause.");
23018 Expr *SimpleRefExpr = RefExpr;
23022 MVLI.ProcessedVarList.push_back(RefExpr);
23033 << 0 << RefExpr->getSourceRange();
23058 Diag(ELoc, diag::err_omp_map_shared_storage) << RefExpr->getSourceRange();
23098 for (Expr *RefExpr : VarList) {
23099 assert(RefExpr && "NULL expr in OpenMP has_device_addr clause.");
23102 Expr *SimpleRefExpr = RefExpr;
23107 MVLI.ProcessedVarList.push_back(RefExpr);
23134 Diag(ELoc, diag::err_omp_map_shared_storage) << RefExpr->getSourceRange();
23144 if (VD && (isa<ArraySectionExpr>(RefExpr->IgnoreParenImpCasts()) ||
23145 isa<ArraySubscriptExpr>(RefExpr->IgnoreParenImpCasts())))
23160 MVLI.ProcessedVarList.push_back(RefExpr->IgnoreParens());
23237 for (Expr *RefExpr : VarList) {
23238 assert(RefExpr && "NULL expr in OpenMP private clause.");
23241 Expr *SimpleRefExpr = RefExpr;
23245 Vars.push_back(RefExpr);
23256 ? RefExpr->IgnoreParens()
23277 for (Expr *RefExpr : VarList) {
23278 assert(RefExpr && "NULL expr in OpenMP nontemporal clause.");
23281 Expr *SimpleRefExpr = RefExpr;
23285 Vars.push_back(RefExpr);
23301 Vars.push_back(RefExpr);
23329 for (Expr *RefExpr : VarList) {
23330 assert(RefExpr && "NULL expr in OpenMP nontemporal clause.");
23333 Expr *SimpleRefExpr = RefExpr;
23338 Vars.push_back(RefExpr);
23351 << RefExpr->getSourceRange();
23355 Vars.push_back(RefExpr);
23370 for (Expr *RefExpr : VarList) {
23371 assert(RefExpr && "NULL expr in OpenMP nontemporal clause.");
23374 Expr *SimpleRefExpr = RefExpr;
23379 Vars.push_back(RefExpr);
23395 << RefExpr->getSourceRange();
23399 Vars.push_back(RefExpr);
23563 for (Expr *RefExpr : Locators) {
23564 assert(RefExpr && "NULL expr in OpenMP shared clause.");
23565 if (isa<DependentScopeDeclRefExpr>(RefExpr) || RefExpr->isTypeDependent()) {
23567 Vars.push_back(RefExpr);
23571 SourceLocation ELoc = RefExpr->getExprLoc();
23572 Expr *SimpleExpr = RefExpr->IgnoreParenImpCasts();
23576 << 1 << 0 << RefExpr->getSourceRange();
23588 << 1 << 0 << RefExpr->getSourceRange();