llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-modules @llvm/pr-subscribers-clang-codegen @llvm/pr-subscribers-clang Author: Krzysztof Parzyszek (kparzysz) <details> <summary>Changes</summary> It returns a range of variables (via Expr*), not a range of lists. --- Patch is 44.69 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/101058.diff 13 Files Affected: - (modified) clang/include/clang/AST/ASTNodeTraverser.h (+2-2) - (modified) clang/include/clang/AST/DeclOpenMP.h (+4-4) - (modified) clang/include/clang/AST/OpenMPClause.h (+2-2) - (modified) clang/include/clang/AST/RecursiveASTVisitor.h (+4-4) - (modified) clang/lib/AST/StmtProfile.cpp (+2-2) - (modified) clang/lib/CodeGen/CGDecl.cpp (+1-1) - (modified) clang/lib/CodeGen/CGOpenMPRuntime.cpp (+9-9) - (modified) clang/lib/CodeGen/CGStmtOpenMP.cpp (+19-19) - (modified) clang/lib/CodeGen/CodeGenModule.cpp (+1-1) - (modified) clang/lib/Sema/SemaOpenMP.cpp (+9-9) - (modified) clang/lib/Sema/SemaTemplateInstantiateDecl.cpp (+5-5) - (modified) clang/lib/Sema/TreeTransform.h (+25-25) - (modified) clang/lib/Serialization/ASTWriter.cpp (+27-27) ``````````diff diff --git a/clang/include/clang/AST/ASTNodeTraverser.h b/clang/include/clang/AST/ASTNodeTraverser.h index 616f92691ec32..0546c19ce8119 100644 --- a/clang/include/clang/AST/ASTNodeTraverser.h +++ b/clang/include/clang/AST/ASTNodeTraverser.h @@ -583,7 +583,7 @@ class ASTNodeTraverser void VisitCapturedDecl(const CapturedDecl *D) { Visit(D->getBody()); } void VisitOMPThreadPrivateDecl(const OMPThreadPrivateDecl *D) { - for (const auto *E : D->varlists()) + for (const auto *E : D->varlist()) Visit(E); } @@ -603,7 +603,7 @@ class ASTNodeTraverser } void VisitOMPAllocateDecl(const OMPAllocateDecl *D) { - for (const auto *E : D->varlists()) + for (const auto *E : D->varlist()) Visit(E); for (const auto *C : D->clauselists()) Visit(C); diff --git a/clang/include/clang/AST/DeclOpenMP.h b/clang/include/clang/AST/DeclOpenMP.h index e542c3c8e66b0..868662208efa1 100644 --- a/clang/include/clang/AST/DeclOpenMP.h +++ b/clang/include/clang/AST/DeclOpenMP.h @@ -143,10 +143,10 @@ class OMPThreadPrivateDecl final : public OMPDeclarativeDirective<Decl> { unsigned varlist_size() const { return Data->getNumChildren(); } bool varlist_empty() const { return Data->getChildren().empty(); } - varlist_range varlists() { + varlist_range varlist() { return varlist_range(varlist_begin(), varlist_end()); } - varlist_const_range varlists() const { + varlist_const_range varlist() const { return varlist_const_range(varlist_begin(), varlist_end()); } varlist_iterator varlist_begin() { return getVars().begin(); } @@ -513,10 +513,10 @@ class OMPAllocateDecl final : public OMPDeclarativeDirective<Decl> { unsigned clauselist_size() const { return Data->getNumClauses(); } bool clauselist_empty() const { return Data->getClauses().empty(); } - varlist_range varlists() { + varlist_range varlist() { return varlist_range(varlist_begin(), varlist_end()); } - varlist_const_range varlists() const { + varlist_const_range varlist() const { return varlist_const_range(varlist_begin(), varlist_end()); } varlist_iterator varlist_begin() { return getVars().begin(); } diff --git a/clang/include/clang/AST/OpenMPClause.h b/clang/include/clang/AST/OpenMPClause.h index 325a1baa44614..b029c72fa7d8f 100644 --- a/clang/include/clang/AST/OpenMPClause.h +++ b/clang/include/clang/AST/OpenMPClause.h @@ -316,10 +316,10 @@ template <class T> class OMPVarListClause : public OMPClause { unsigned varlist_size() const { return NumVars; } bool varlist_empty() const { return NumVars == 0; } - varlist_range varlists() { + varlist_range varlist() { return varlist_range(varlist_begin(), varlist_end()); } - varlist_const_range varlists() const { + varlist_const_range varlist() const { return varlist_const_range(varlist_begin(), varlist_end()); } diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index e3c0cb46799f7..79a1f4c0ea1d7 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/RecursiveASTVisitor.h @@ -1772,7 +1772,7 @@ DEF_TRAVERSE_DECL(UsingShadowDecl, {}) DEF_TRAVERSE_DECL(ConstructorUsingShadowDecl, {}) DEF_TRAVERSE_DECL(OMPThreadPrivateDecl, { - for (auto *I : D->varlists()) { + for (auto *I : D->varlist()) { TRY_TO(TraverseStmt(I)); } }) @@ -1801,7 +1801,7 @@ DEF_TRAVERSE_DECL(OMPDeclareMapperDecl, { DEF_TRAVERSE_DECL(OMPCapturedExprDecl, { TRY_TO(TraverseVarHelper(D)); }) DEF_TRAVERSE_DECL(OMPAllocateDecl, { - for (auto *I : D->varlists()) + for (auto *I : D->varlist()) TRY_TO(TraverseStmt(I)); for (auto *C : D->clauselists()) TRY_TO(TraverseOMPClause(C)); @@ -3552,7 +3552,7 @@ bool RecursiveASTVisitor<Derived>::VisitOMPNocontextClause( template <typename Derived> template <typename T> bool RecursiveASTVisitor<Derived>::VisitOMPClauseList(T *Node) { - for (auto *E : Node->varlists()) { + for (auto *E : Node->varlist()) { TRY_TO(TraverseStmt(E)); } return true; @@ -3926,7 +3926,7 @@ template <typename Derived> bool RecursiveASTVisitor<Derived>::VisitOMPAffinityClause( OMPAffinityClause *C) { TRY_TO(TraverseStmt(C->getModifier())); - for (Expr *E : C->varlists()) + for (Expr *E : C->varlist()) TRY_TO(TraverseStmt(E)); return true; } diff --git a/clang/lib/AST/StmtProfile.cpp b/clang/lib/AST/StmtProfile.cpp index 89d2a422509d8..f1e723b4242ee 100644 --- a/clang/lib/AST/StmtProfile.cpp +++ b/clang/lib/AST/StmtProfile.cpp @@ -624,7 +624,7 @@ void OMPClauseProfiler::VisitOMPFilterClause(const OMPFilterClause *C) { template<typename T> void OMPClauseProfiler::VisitOMPClauseList(T *Node) { - for (auto *E : Node->varlists()) { + for (auto *E : Node->varlist()) { if (E) Profiler->VisitStmt(E); } @@ -918,7 +918,7 @@ void OMPClauseProfiler::VisitOMPUsesAllocatorsClause( void OMPClauseProfiler::VisitOMPAffinityClause(const OMPAffinityClause *C) { if (const Expr *Modifier = C->getModifier()) Profiler->VisitStmt(Modifier); - for (const Expr *E : C->varlists()) + for (const Expr *E : C->varlist()) Profiler->VisitStmt(E); } void OMPClauseProfiler::VisitOMPOrderClause(const OMPOrderClause *C) {} diff --git a/clang/lib/CodeGen/CGDecl.cpp b/clang/lib/CodeGen/CGDecl.cpp index c3251bb5ab565..882dbad456379 100644 --- a/clang/lib/CodeGen/CGDecl.cpp +++ b/clang/lib/CodeGen/CGDecl.cpp @@ -2790,7 +2790,7 @@ void CodeGenModule::EmitOMPRequiresDecl(const OMPRequiresDecl *D) { } void CodeGenModule::EmitOMPAllocateDecl(const OMPAllocateDecl *D) { - for (const Expr *E : D->varlists()) { + for (const Expr *E : D->varlist()) { const auto *DE = cast<DeclRefExpr>(E); const auto *VD = cast<VarDecl>(DE->getDecl()); diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp index ec644acf68a20..d869aa3322cce 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -3861,7 +3861,7 @@ CGOpenMPRuntime::emitTaskInit(CodeGenFunction &CGF, SourceLocation Loc, HasIterator = true; continue; } - for (const Expr *E : C->varlists()) { + for (const Expr *E : C->varlist()) { llvm::Value *Addr; llvm::Value *Size; std::tie(Addr, Size) = getPointerAndSize(CGF, E); @@ -3894,7 +3894,7 @@ CGOpenMPRuntime::emitTaskInit(CodeGenFunction &CGF, SourceLocation Loc, continue; OMPIteratorGeneratorScope IteratorScope( CGF, cast_or_null<OMPIteratorExpr>(Modifier->IgnoreParenImpCasts())); - for (const Expr *E : C->varlists()) { + for (const Expr *E : C->varlist()) { llvm::Value *Addr; llvm::Value *Size; std::tie(Addr, Size) = getPointerAndSize(CGF, E); @@ -8187,7 +8187,7 @@ class MappableExprsHandler { : CurDir(&Dir), CGF(CGF) { // Extract firstprivate clause information. for (const auto *C : Dir.getClausesOfKind<OMPFirstprivateClause>()) - for (const auto *D : C->varlists()) + for (const auto *D : C->varlist()) FirstPrivateDecls.try_emplace( cast<VarDecl>(cast<DeclRefExpr>(D)->getDecl()), C->isImplicit()); // Extract implicit firstprivates from uses_allocators clauses. @@ -11506,7 +11506,7 @@ void CGOpenMPRuntime::LastprivateConditionalRAII::tryToDisableInnerAnalysis( } // Exclude vars in private clauses. for (const auto *C : S.getClausesOfKind<OMPPrivateClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -11516,7 +11516,7 @@ void CGOpenMPRuntime::LastprivateConditionalRAII::tryToDisableInnerAnalysis( } } for (const auto *C : S.getClausesOfKind<OMPFirstprivateClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -11526,7 +11526,7 @@ void CGOpenMPRuntime::LastprivateConditionalRAII::tryToDisableInnerAnalysis( } } for (const auto *C : S.getClausesOfKind<OMPLastprivateClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -11536,7 +11536,7 @@ void CGOpenMPRuntime::LastprivateConditionalRAII::tryToDisableInnerAnalysis( } } for (const auto *C : S.getClausesOfKind<OMPReductionClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -11546,7 +11546,7 @@ void CGOpenMPRuntime::LastprivateConditionalRAII::tryToDisableInnerAnalysis( } } for (const auto *C : S.getClausesOfKind<OMPLinearClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -11589,7 +11589,7 @@ CGOpenMPRuntime::LastprivateConditionalRAII::LastprivateConditionalRAII( if (C->getKind() != OMPC_LASTPRIVATE_conditional) continue; - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { Data.DeclToUniqueName.insert(std::make_pair( cast<DeclRefExpr>(Ref->IgnoreParenImpCasts())->getDecl(), SmallString<16>(generateUniqueName(CGM, "pl_cond", Ref)))); diff --git a/clang/lib/CodeGen/CGStmtOpenMP.cpp b/clang/lib/CodeGen/CGStmtOpenMP.cpp index 4ee9840f12e06..b1ac9361957ff 100644 --- a/clang/lib/CodeGen/CGStmtOpenMP.cpp +++ b/clang/lib/CodeGen/CGStmtOpenMP.cpp @@ -156,7 +156,7 @@ class OMPLoopScope : public CodeGenFunction::RunCleanupsScope { } // Mark private vars as undefs. for (const auto *C : LD->getClausesOfKind<OMPPrivateClause>()) { - for (const Expr *IRef : C->varlists()) { + for (const Expr *IRef : C->varlist()) { const auto *OrigVD = cast<VarDecl>(cast<DeclRefExpr>(IRef)->getDecl()); if (EmittedAsPrivate.insert(OrigVD->getCanonicalDecl()).second) { @@ -257,13 +257,13 @@ class OMPSimdLexicalScope : public CodeGenFunction::LexicalScope { } } } else if (const auto *UDP = dyn_cast<OMPUseDevicePtrClause>(C)) { - for (const Expr *E : UDP->varlists()) { + for (const Expr *E : UDP->varlist()) { const Decl *D = cast<DeclRefExpr>(E)->getDecl(); if (const auto *OED = dyn_cast<OMPCapturedExprDecl>(D)) CGF.EmitVarDecl(*OED); } } else if (const auto *UDP = dyn_cast<OMPUseDeviceAddrClause>(C)) { - for (const Expr *E : UDP->varlists()) { + for (const Expr *E : UDP->varlist()) { const Decl *D = getBaseDecl(E); if (const auto *OED = dyn_cast<OMPCapturedExprDecl>(D)) CGF.EmitVarDecl(*OED); @@ -865,7 +865,7 @@ bool CodeGenFunction::EmitOMPFirstprivateClause(const OMPExecutableDirective &D, bool FirstprivateIsLastprivate = false; llvm::DenseMap<const VarDecl *, OpenMPLastprivateModifier> Lastprivates; for (const auto *C : D.getClausesOfKind<OMPLastprivateClause>()) { - for (const auto *D : C->varlists()) + for (const auto *D : C->varlist()) Lastprivates.try_emplace( cast<VarDecl>(cast<DeclRefExpr>(D)->getDecl())->getCanonicalDecl(), C->getKind()); @@ -1545,7 +1545,7 @@ checkForLastprivateConditionalUpdate(CodeGenFunction &CGF, return; llvm::DenseSet<CanonicalDeclPtr<const VarDecl>> PrivateDecls; for (const auto *C : S.getClausesOfKind<OMPReductionClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -1556,7 +1556,7 @@ checkForLastprivateConditionalUpdate(CodeGenFunction &CGF, } } for (const auto *C : S.getClausesOfKind<OMPLastprivateClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -1567,7 +1567,7 @@ checkForLastprivateConditionalUpdate(CodeGenFunction &CGF, } } for (const auto *C : S.getClausesOfKind<OMPLinearClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -1582,7 +1582,7 @@ checkForLastprivateConditionalUpdate(CodeGenFunction &CGF, // Firstprivates do not return value but may be passed by reference - no need // to check for updated lastprivate conditional. for (const auto *C : S.getClausesOfKind<OMPFirstprivateClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { if (!Ref->getType()->isScalarType()) continue; const auto *DRE = dyn_cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); @@ -2288,7 +2288,7 @@ static void emitAlignedClause(CodeGenFunction &CGF, cast<llvm::ConstantInt>(CGF.EmitScalarExpr(AlignmentExpr)); ClauseAlignment = AlignmentCI->getValue(); } - for (const Expr *E : Clause->varlists()) { + for (const Expr *E : Clause->varlist()) { llvm::APInt Alignment(ClauseAlignment); if (Alignment == 0) { // OpenMP [2.8.1, Description] @@ -2407,7 +2407,7 @@ void CodeGenFunction::EmitOMPLinearClause( } for (const auto *C : D.getClausesOfKind<OMPLinearClause>()) { auto CurPrivate = C->privates().begin(); - for (const Expr *E : C->varlists()) { + for (const Expr *E : C->varlist()) { const auto *VD = cast<VarDecl>(cast<DeclRefExpr>(E)->getDecl()); const auto *PrivateVD = cast<VarDecl>(cast<DeclRefExpr>(*CurPrivate)->getDecl()); @@ -2711,7 +2711,7 @@ GetAlignedMapping(const OMPLoopDirective &S, CodeGenFunction &CGF) { cast<llvm::ConstantInt>(CGF.EmitScalarExpr(AlignmentExpr)); ClauseAlignment = AlignmentCI->getValue(); } - for (const Expr *E : Clause->varlists()) { + for (const Expr *E : Clause->varlist()) { llvm::APInt Alignment(ClauseAlignment); if (Alignment == 0) { // OpenMP [2.8.1, Description] @@ -4329,7 +4329,7 @@ void CodeGenFunction::EmitOMPSingleDirective(const OMPSingleDirective &S) { // Build a list of copyprivate variables along with helper expressions // (<source>, <destination>, <destination>=<source> expressions) for (const auto *C : S.getClausesOfKind<OMPCopyprivateClause>()) { - CopyprivateVars.append(C->varlists().begin(), C->varlists().end()); + CopyprivateVars.append(C->varlist_begin(), C->varlist_end()); DestExprs.append(C->destination_exprs().begin(), C->destination_exprs().end()); SrcExprs.append(C->source_exprs().begin(), C->source_exprs().end()); @@ -5035,7 +5035,7 @@ void CodeGenFunction::EmitOMPTaskBasedDirective( auto IPriv = C->privates().begin(); auto IRed = C->reduction_ops().begin(); auto ITD = C->taskgroup_descriptors().begin(); - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { InRedVars.emplace_back(Ref); InRedPrivs.emplace_back(*IPriv); InRedOps.emplace_back(*IRed); @@ -5318,7 +5318,7 @@ void CodeGenFunction::processInReduction(const OMPExecutableDirective &S, auto IPriv = C->privates().begin(); auto IRed = C->reduction_ops().begin(); auto ITD = C->taskgroup_descriptors().begin(); - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { InRedVars.emplace_back(Ref); InRedPrivs.emplace_back(*IPriv); InRedOps.emplace_back(*IRed); @@ -7346,7 +7346,7 @@ void CodeGenFunction::EmitOMPUseDevicePtrClause( const llvm::DenseMap<const ValueDecl *, llvm::Value *> CaptureDeviceAddrMap) { llvm::SmallDenseSet<CanonicalDeclPtr<const Decl>, 4> Processed; - for (const Expr *OrigVarIt : C.varlists()) { + for (const Expr *OrigVarIt : C.varlist()) { const auto *OrigVD = cast<VarDecl>(cast<DeclRefExpr>(OrigVarIt)->getDecl()); if (!Processed.insert(OrigVD).second) continue; @@ -7397,7 +7397,7 @@ void CodeGenFunction::EmitOMPUseDeviceAddrClause( const llvm::DenseMap<const ValueDecl *, llvm::Value *> CaptureDeviceAddrMap) { llvm::SmallDenseSet<CanonicalDeclPtr<const Decl>, 4> Processed; - for (const Expr *Ref : C.varlists()) { + for (const Expr *Ref : C.varlist()) { const VarDecl *OrigVD = getBaseDecl(Ref); if (!Processed.insert(OrigVD).second) continue; @@ -7494,13 +7494,13 @@ void CodeGenFunction::EmitOMPTargetDataDirective( if (CGM.getLangOpts().OMPTargetTriples.empty()) { // Emit helper decls of the use_device_ptr/use_device_addr clauses. for (const auto *C : S.getClausesOfKind<OMPUseDevicePtrClause>()) - for (const Expr *E : C->varlists()) { + for (const Expr *E : C->varlist()) { const Decl *D = cast<DeclRefExpr>(E)->getDecl(); if (const auto *OED = dyn_cast<OMPCapturedExprDecl>(D)) CGF.EmitVarDecl(*OED); } for (const auto *C : S.getClausesOfKind<OMPUseDeviceAddrClause>()) - for (const Expr *E : C->varlists()) { + for (const Expr *E : C->varlist()) { const Decl *D = getBaseDecl(E); if (const auto *OED = dyn_cast<OMPCapturedExprDecl>(D)) CGF.EmitVarDecl(*OED); @@ -8232,7 +8232,7 @@ void CodeGenFunction::EmitSimpleOMPExecutableDirective( if (isOpenMPTaskingDirective(D.getDirectiveKind())) { // Capture global firstprivates to avoid crash. for (const auto *C : D.getClausesOfKind<OMPFirstprivateClause>()) { - for (const Expr *Ref : C->varlists()) { + for (const Expr *Ref : C->varlist()) { const auto *DRE = cast<DeclRefExpr>(Ref->IgnoreParenImpCasts()); if (!DRE) continue; diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 63ed5b4dd0c31..344a0e538f22a 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -7484,7 +7484,7 @@ void CodeGenModule::EmitOMPThreadPrivateDecl(const OMPThreadPrivateDecl *D) { // Do not emit threadprivates in simd-only mode. if (LangOpts.OpenMP && LangOpts.OpenMPSimd) return; - for (auto RefExpr : D->varlists()) { + for (auto RefExpr : D->varlist()) { auto *VD = cast<VarDecl>(cast<DeclRefExpr>(RefExpr)->getDecl()); bool PerformInit = VD->getAnyInitializer() && diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 9c80b3eec914c..ab8f293d0a683 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -2831,7 +2831,7 @@ static void checkReductionClauses(Sema &S, DSAStackTy *Stack, S.Diag(InscanLoc, diag::note_omp_previous_inscan_reduction); continue; } - for (Expr *Ref : RC->varlists()) { + for (Expr *Ref : RC->varlist()) { assert(Ref && "NULL expr in OpenMP nontemporal clause."); SourceLocation ELoc; SourceRange ERange; @@ -2871,7 +2871,7 @@ void SemaOpenMP::EndOpenMPDSABlock(Stmt *CurDirective) { for (OMPClause *C : D->clauses()) { if (auto *Clause = dyn_cast<OMPLastprivateClause>(C)) { SmallVector<Expr *, 8> PrivateCopies; - for (Expr *DE : Clause->varlists()) { + for (Expr *DE : Clause->varlist()) { if (DE->isValueDependent() || DE->isTypeDependent()) { PrivateCopies.push_back(nullptr); continue; @@ -2909,7 +2909,7 @@ void SemaOpenMP::EndOpenMPDSABlock(Stmt *CurDirective) { // Finalize nontemporal clause by handling private copies, if any. if (auto *Clause = dyn_cast<OMPNontemporalClause>... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/101058 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits