clang 20.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
clang::SemaOpenMP Class Reference

#include "clang/Sema/SemaOpenMP.h"

Inheritance diagram for clang::SemaOpenMP:
Inheritance graph
[legend]

Classes

struct  DeclareTargetContextInfo
 
struct  OMPIteratorData
 Data structure for iterator expression. More...
 
struct  OpenMPVarListDataTy
 Data used for processing a list of variables in OpenMP clauses. More...
 
struct  UsesAllocatorsData
 Data for list of allocators. More...
 

Public Types

using DeclGroupPtrTy = OpaquePtr< DeclGroupRef >
 
using CapturedParamNameType = std::pair< StringRef, QualType >
 
using VarsWithInheritedDSAType = llvm::SmallDenseMap< const ValueDecl *, const Expr *, 4 >
 

Public Member Functions

 SemaOpenMP (Sema &S)
 
SemaDiagnosticBuilder diagIfOpenMPDeviceCode (SourceLocation Loc, unsigned DiagID, const FunctionDecl *FD)
 Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as device code".
 
SemaDiagnosticBuilder diagIfOpenMPHostCode (SourceLocation Loc, unsigned DiagID, const FunctionDecl *FD)
 Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as host code".
 
void ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope (Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, SmallVectorImpl< FunctionDecl * > &Bases)
 The declarator D defines a function in the scope S which is nested in an omp begin/end declare variant scope.
 
void ActOnFinishedFunctionDefinitionInOpenMPDeclareVariantScope (Decl *D, SmallVectorImpl< FunctionDecl * > &Bases)
 Register D as specialization of all base functions in Bases in the current omp begin/end declare variant scope.
 
void ActOnFinishedFunctionDefinitionInOpenMPAssumeScope (Decl *D)
 Act on D, a function definition inside of an omp [begin/end] assumes.
 
bool isInOpenMPDeclareVariantScope () const
 Can we exit an OpenMP declare variant scope at the moment.
 
ExprResult VerifyPositiveIntegerConstantInClause (Expr *Op, OpenMPClauseKind CKind, bool StrictlyPositive=true, bool SuppressExprDiags=false)
 
ExprResult ActOnOpenMPCall (ExprResult Call, Scope *Scope, SourceLocation LParenLoc, MultiExprArg ArgExprs, SourceLocation RParenLoc, Expr *ExecConfig)
 Given the potential call expression Call, determine if there is a specialization via the OpenMP declare variant mechanism available.
 
void ActOnOpenMPBeginDeclareVariant (SourceLocation Loc, OMPTraitInfo &TI)
 Handle a omp begin declare variant.
 
void ActOnOpenMPEndDeclareVariant ()
 Handle a omp end declare variant.
 
void tryCaptureOpenMPLambdas (ValueDecl *V)
 Function tries to capture lambda's captured variables in the OpenMP region before the original lambda is captured.
 
bool isOpenMPCapturedByRef (const ValueDecl *D, unsigned Level, unsigned OpenMPCaptureLevel) const
 Return true if the provided declaration VD should be captured by reference.
 
VarDeclisOpenMPCapturedDecl (ValueDecl *D, bool CheckScopeInfo=false, unsigned StopAt=0)
 Check if the specified variable is used in one of the private clauses (private, firstprivate, lastprivate, reduction etc.) in OpenMP constructs.
 
bool isOpenMPRebuildMemberExpr (ValueDecl *D)
 The member expression(this->fd) needs to be rebuilt in the template instantiation to generate private copy for OpenMP when default clause is used.
 
ExprResult getOpenMPCapturedExpr (VarDecl *Capture, ExprValueKind VK, ExprObjectKind OK, SourceLocation Loc)
 
void startOpenMPLoop ()
 If the current region is a loop-based region, mark the start of the loop construct.
 
void startOpenMPCXXRangeFor ()
 If the current region is a range loop-based region, mark the start of the loop construct.
 
OpenMPClauseKind isOpenMPPrivateDecl (ValueDecl *D, unsigned Level, unsigned CapLevel) const
 Check if the specified variable is used in 'private' clause.
 
void setOpenMPCaptureKind (FieldDecl *FD, const ValueDecl *D, unsigned Level)
 Sets OpenMP capture kind (OMPC_private, OMPC_firstprivate, OMPC_map etc.) for FD based on DSA for the provided corresponding captured declaration D.
 
bool isOpenMPTargetCapturedDecl (const ValueDecl *D, unsigned Level, unsigned CaptureLevel) const
 Check if the specified variable is captured by 'target' directive.
 
bool isOpenMPGlobalCapturedDecl (ValueDecl *D, unsigned Level, unsigned CaptureLevel) const
 Check if the specified global variable must be captured by outer capture regions.
 
ExprResult PerformOpenMPImplicitIntegerConversion (SourceLocation OpLoc, Expr *Op)
 
void StartOpenMPDSABlock (OpenMPDirectiveKind K, const DeclarationNameInfo &DirName, Scope *CurScope, SourceLocation Loc)
 Called on start of new data sharing attribute block.
 
void StartOpenMPClause (OpenMPClauseKind K)
 Start analysis of clauses.
 
void EndOpenMPClause ()
 End analysis of clauses.
 
void EndOpenMPDSABlock (Stmt *CurDirective)
 Called on end of data sharing attribute block.
 
void ActOnOpenMPLoopInitialization (SourceLocation ForLoc, Stmt *Init)
 Check if the current region is an OpenMP loop region and if it is, mark loop control variable, used in Init for loop initialization, as private by default.
 
StmtResult ActOnOpenMPMetaDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp metadirective' after parsing of the associated statement.
 
ExprResult ActOnOpenMPIdExpression (Scope *CurScope, CXXScopeSpec &ScopeSpec, const DeclarationNameInfo &Id, OpenMPDirectiveKind Kind)
 Called on correct id-expression from the '#pragma omp threadprivate'.
 
DeclGroupPtrTy ActOnOpenMPThreadprivateDirective (SourceLocation Loc, ArrayRef< Expr * > VarList)
 Called on well-formed '#pragma omp threadprivate'.
 
OMPThreadPrivateDeclCheckOMPThreadPrivateDecl (SourceLocation Loc, ArrayRef< Expr * > VarList)
 Builds a new OpenMPThreadPrivateDecl and checks its correctness.
 
DeclGroupPtrTy ActOnOpenMPAllocateDirective (SourceLocation Loc, ArrayRef< Expr * > VarList, ArrayRef< OMPClause * > Clauses, DeclContext *Owner=nullptr)
 Called on well-formed '#pragma omp allocate'.
 
void ActOnOpenMPAssumesDirective (SourceLocation Loc, OpenMPDirectiveKind DKind, ArrayRef< std::string > Assumptions, bool SkippedClauses)
 Called on well-formed '#pragma omp [begin] assume[s]'.
 
bool isInOpenMPAssumeScope () const
 Check if there is an active global omp begin assumes directive.
 
bool hasGlobalOpenMPAssumes () const
 Check if there is an active global omp assumes directive.
 
void ActOnOpenMPEndAssumesDirective ()
 Called on well-formed '#pragma omp end assumes'.
 
DeclGroupPtrTy ActOnOpenMPRequiresDirective (SourceLocation Loc, ArrayRef< OMPClause * > ClauseList)
 Called on well-formed '#pragma omp requires'.
 
OMPRequiresDeclCheckOMPRequiresDecl (SourceLocation Loc, ArrayRef< OMPClause * > Clauses)
 Check restrictions on Requires directive.
 
QualType ActOnOpenMPDeclareReductionType (SourceLocation TyLoc, TypeResult ParsedType)
 Check if the specified type is allowed to be used in 'omp declare reduction' construct.
 
DeclGroupPtrTy ActOnOpenMPDeclareReductionDirectiveStart (Scope *S, DeclContext *DC, DeclarationName Name, ArrayRef< std::pair< QualType, SourceLocation > > ReductionTypes, AccessSpecifier AS, Decl *PrevDeclInScope=nullptr)
 Called on start of '#pragma omp declare reduction'.
 
void ActOnOpenMPDeclareReductionCombinerStart (Scope *S, Decl *D)
 Initialize declare reduction construct initializer.
 
void ActOnOpenMPDeclareReductionCombinerEnd (Decl *D, Expr *Combiner)
 Finish current declare reduction construct initializer.
 
VarDeclActOnOpenMPDeclareReductionInitializerStart (Scope *S, Decl *D)
 Initialize declare reduction construct initializer.
 
void ActOnOpenMPDeclareReductionInitializerEnd (Decl *D, Expr *Initializer, VarDecl *OmpPrivParm)
 Finish current declare reduction construct initializer.
 
DeclGroupPtrTy ActOnOpenMPDeclareReductionDirectiveEnd (Scope *S, DeclGroupPtrTy DeclReductions, bool IsValid)
 Called at the end of '#pragma omp declare reduction'.
 
TypeResult ActOnOpenMPDeclareMapperVarDecl (Scope *S, Declarator &D)
 Check variable declaration in 'omp declare mapper' construct.
 
QualType ActOnOpenMPDeclareMapperType (SourceLocation TyLoc, TypeResult ParsedType)
 Check if the specified type is allowed to be used in 'omp declare mapper' construct.
 
DeclGroupPtrTy ActOnOpenMPDeclareMapperDirective (Scope *S, DeclContext *DC, DeclarationName Name, QualType MapperType, SourceLocation StartLoc, DeclarationName VN, AccessSpecifier AS, Expr *MapperVarRef, ArrayRef< OMPClause * > Clauses, Decl *PrevDeclInScope=nullptr)
 Called on start of '#pragma omp declare mapper'.
 
ExprResult ActOnOpenMPDeclareMapperDirectiveVarDecl (Scope *S, QualType MapperType, SourceLocation StartLoc, DeclarationName VN)
 Build the mapper variable of '#pragma omp declare mapper'.
 
void ActOnOpenMPIteratorVarDecl (VarDecl *VD)
 
bool isOpenMPDeclareMapperVarDeclAllowed (const VarDecl *VD) const
 
const ValueDeclgetOpenMPDeclareMapperVarName () const
 
bool ActOnStartOpenMPDeclareTargetContext (DeclareTargetContextInfo &DTCI)
 Called on the start of target region i.e. '#pragma omp declare target'.
 
const DeclareTargetContextInfo ActOnOpenMPEndDeclareTargetDirective ()
 Called at the end of target region i.e. '#pragma omp end declare target'.
 
void ActOnFinishedOpenMPDeclareTargetContext (DeclareTargetContextInfo &DTCI)
 Called once a target context is completed, that can be when a '#pragma omp end declare target' was encountered or when a '#pragma omp declare target' without declaration-definition-seq was encountered.
 
void DiagnoseUnterminatedOpenMPDeclareTarget ()
 Report unterminated 'omp declare target' or 'omp begin declare target' at the end of a compilation unit.
 
NamedDecllookupOpenMPDeclareTargetName (Scope *CurScope, CXXScopeSpec &ScopeSpec, const DeclarationNameInfo &Id)
 Searches for the provided declaration name for OpenMP declare target directive.
 
void ActOnOpenMPDeclareTargetName (NamedDecl *ND, SourceLocation Loc, OMPDeclareTargetDeclAttr::MapTypeTy MT, DeclareTargetContextInfo &DTCI)
 Called on correct id-expression from the '#pragma omp declare target'.
 
void checkDeclIsAllowedInOpenMPTarget (Expr *E, Decl *D, SourceLocation IdLoc=SourceLocation())
 Check declaration inside target region.
 
void ActOnOpenMPDeclareTargetInitializer (Decl *D)
 Adds OMPDeclareTargetDeclAttr to referenced variables in declare target directive.
 
void finalizeOpenMPDelayedAnalysis (const FunctionDecl *Caller, const FunctionDecl *Callee, SourceLocation Loc)
 Finishes analysis of the deferred functions calls that may be declared as host/nohost during device/host compilation.
 
bool isInOpenMPTaskUntiedContext () const
 Return true if currently in OpenMP task with untied clause context.
 
bool isInOpenMPDeclareTargetContext () const
 Return true inside OpenMP declare target region.
 
bool isInOpenMPTargetExecutionDirective () const
 Return true inside OpenMP target region.
 
void ActOnOpenMPRegionStart (OpenMPDirectiveKind DKind, Scope *CurScope)
 Initialization of captured region for OpenMP region.
 
StmtResult ActOnOpenMPCanonicalLoop (Stmt *AStmt)
 Called for syntactical loops (ForStmt or CXXForRangeStmt) associated to an OpenMP loop directive.
 
StmtResult ActOnOpenMPLoopnest (Stmt *AStmt)
 Process a canonical OpenMP loop nest that can either be a canonical literal loop (ForStmt or CXXForRangeStmt), or the generated loop of an OpenMP loop transformation construct.
 
StmtResult ActOnOpenMPRegionEnd (StmtResult S, ArrayRef< OMPClause * > Clauses)
 End of OpenMP region.
 
StmtResult ActOnOpenMPExecutableDirective (OpenMPDirectiveKind Kind, const DeclarationNameInfo &DirName, OpenMPDirectiveKind CancelRegion, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 
StmtResult ActOnOpenMPInformationalDirective (OpenMPDirectiveKind Kind, const DeclarationNameInfo &DirName, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Process an OpenMP informational directive.
 
StmtResult ActOnOpenMPAssumeDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Process an OpenMP assume directive.
 
StmtResult ActOnOpenMPParallelDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp parallel' after parsing of the associated statement.
 
StmtResult ActOnOpenMPSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTileDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp tile' after parsing of its clauses and the associated statement.
 
StmtResult ActOnOpenMPUnrollDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp unroll' after parsing of its clauses and the associated statement.
 
StmtResult ActOnOpenMPReverseDirective (Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp reverse'.
 
StmtResult ActOnOpenMPInterchangeDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp interchange' after parsing of its clauses and the associated statement.
 
StmtResult ActOnOpenMPForDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp for' after parsing of the associated statement.
 
StmtResult ActOnOpenMPForSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp for simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPSectionsDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp sections' after parsing of the associated statement.
 
StmtResult ActOnOpenMPSectionDirective (Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp section' after parsing of the associated statement.
 
StmtResult ActOnOpenMPScopeDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp scope' after parsing of the associated statement.
 
StmtResult ActOnOpenMPSingleDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp single' after parsing of the associated statement.
 
StmtResult ActOnOpenMPMasterDirective (Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp master' after parsing of the associated statement.
 
StmtResult ActOnOpenMPCriticalDirective (const DeclarationNameInfo &DirName, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp critical' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelForDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp parallel for' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelForSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp parallel for simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelMasterDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp parallel master' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelMaskedDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp parallel masked' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelSectionsDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp parallel sections' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTaskDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp task' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTaskyieldDirective (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp taskyield'.
 
StmtResult ActOnOpenMPErrorDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, bool InExContext=true)
 Called on well-formed '#pragma omp error'.
 
StmtResult ActOnOpenMPBarrierDirective (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp barrier'.
 
StmtResult ActOnOpenMPTaskwaitDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp taskwait'.
 
StmtResult ActOnOpenMPTaskgroupDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp taskgroup'.
 
StmtResult ActOnOpenMPFlushDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp flush'.
 
StmtResult ActOnOpenMPDepobjDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp depobj'.
 
StmtResult ActOnOpenMPScanDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp scan'.
 
StmtResult ActOnOpenMPOrderedDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp ordered' after parsing of the associated statement.
 
StmtResult ActOnOpenMPAtomicDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp atomic' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp target' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetDataDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp target data' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetEnterDataDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, Stmt *AStmt)
 Called on well-formed '#pragma omp target enter data' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetExitDataDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, Stmt *AStmt)
 Called on well-formed '#pragma omp target exit data' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetParallelDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp target parallel' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetParallelForDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target parallel for' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTeamsDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp teams' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTeamsGenericLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp teams loop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetTeamsGenericLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target teams loop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelGenericLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp parallel loop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetParallelGenericLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target parallel loop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPCancellationPointDirective (SourceLocation StartLoc, SourceLocation EndLoc, OpenMPDirectiveKind CancelRegion)
 Called on well-formed '#pragma omp cancellation point'.
 
StmtResult ActOnOpenMPCancelDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, OpenMPDirectiveKind CancelRegion)
 Called on well-formed '#pragma omp cancel'.
 
StmtResult ActOnOpenMPTaskLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp taskloop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTaskLoopSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp taskloop simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPMasterTaskLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp master taskloop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPMasterTaskLoopSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp master taskloop simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelMasterTaskLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp parallel master taskloop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelMasterTaskLoopSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp parallel master taskloop simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPMaskedTaskLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp masked taskloop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPMaskedTaskLoopSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp masked taskloop simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelMaskedTaskLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp parallel masked taskloop' after parsing of the associated statement.
 
StmtResult ActOnOpenMPParallelMaskedTaskLoopSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp parallel masked taskloop simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPDistributeDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp distribute' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetUpdateDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc, Stmt *AStmt)
 Called on well-formed '#pragma omp target update'.
 
StmtResult ActOnOpenMPDistributeParallelForDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp distribute parallel for' after parsing of the associated statement.
 
StmtResult ActOnOpenMPDistributeParallelForSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp distribute parallel for simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPDistributeSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp distribute simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetParallelForSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target parallel for simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTeamsDistributeDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp teams distribute' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTeamsDistributeSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp teams distribute simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTeamsDistributeParallelForSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp teams distribute parallel for simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTeamsDistributeParallelForDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp teams distribute parallel for' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetTeamsDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp target teams' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetTeamsDistributeDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target teams distribute' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetTeamsDistributeParallelForDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target teams distribute parallel for' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target teams distribute parallel for simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPTargetTeamsDistributeSimdDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp target teams distribute simd' after parsing of the associated statement.
 
StmtResult ActOnOpenMPInteropDirective (ArrayRef< OMPClause * > Clauses, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp interop'.
 
StmtResult ActOnOpenMPDispatchDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp dispatch' after parsing of the.
 
StmtResult ActOnOpenMPMaskedDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed '#pragma omp masked' after parsing of the.
 
StmtResult ActOnOpenMPGenericLoopDirective (ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc, VarsWithInheritedDSAType &VarsWithImplicitDSA)
 Called on well-formed '#pragma omp loop' after parsing of the associated statement.
 
bool CheckOpenMPLinearModifier (OpenMPLinearClauseKind LinKind, SourceLocation LinLoc)
 Checks correctness of linear modifiers.
 
bool CheckOpenMPLinearDecl (const ValueDecl *D, SourceLocation ELoc, OpenMPLinearClauseKind LinKind, QualType Type, bool IsDeclareSimd=false)
 Checks that the specified declaration matches requirements for the linear decls.
 
DeclGroupPtrTy ActOnOpenMPDeclareSimdDirective (DeclGroupPtrTy DG, OMPDeclareSimdDeclAttr::BranchStateTy BS, Expr *Simdlen, ArrayRef< Expr * > Uniforms, ArrayRef< Expr * > Aligneds, ArrayRef< Expr * > Alignments, ArrayRef< Expr * > Linears, ArrayRef< unsigned > LinModifiers, ArrayRef< Expr * > Steps, SourceRange SR)
 Called on well-formed '#pragma omp declare simd' after parsing of the associated method/function.
 
std::optional< std::pair< FunctionDecl *, Expr * > > checkOpenMPDeclareVariantFunction (DeclGroupPtrTy DG, Expr *VariantRef, OMPTraitInfo &TI, unsigned NumAppendArgs, SourceRange SR)
 Checks '#pragma omp declare variant' variant function and original functions after parsing of the associated method/function.
 
void ActOnOpenMPDeclareVariantDirective (FunctionDecl *FD, Expr *VariantRef, OMPTraitInfo &TI, ArrayRef< Expr * > AdjustArgsNothing, ArrayRef< Expr * > AdjustArgsNeedDevicePtr, ArrayRef< OMPInteropInfo > AppendArgs, SourceLocation AdjustArgsLoc, SourceLocation AppendArgsLoc, SourceRange SR)
 Called on well-formed '#pragma omp declare variant' after parsing of the associated method/function.
 
OMPClauseActOnOpenMPSingleExprClause (OpenMPClauseKind Kind, Expr *Expr, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 
OMPClauseActOnOpenMPAllocatorClause (Expr *Allocator, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'allocator' clause.
 
OMPClauseActOnOpenMPIfClause (OpenMPDirectiveKind NameModifier, Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation NameModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc)
 Called on well-formed 'if' clause.
 
OMPClauseActOnOpenMPFinalClause (Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'final' clause.
 
OMPClauseActOnOpenMPNumThreadsClause (Expr *NumThreads, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'num_threads' clause.
 
OMPClauseActOnOpenMPAlignClause (Expr *Alignment, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'align' clause.
 
OMPClauseActOnOpenMPSafelenClause (Expr *Length, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'safelen' clause.
 
OMPClauseActOnOpenMPSimdlenClause (Expr *Length, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'simdlen' clause.
 
OMPClauseActOnOpenMPSizesClause (ArrayRef< Expr * > SizeExprs, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-form 'sizes' clause.
 
OMPClauseActOnOpenMPFullClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-form 'full' clauses.
 
OMPClauseActOnOpenMPPartialClause (Expr *FactorExpr, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-form 'partial' clauses.
 
OMPClauseActOnOpenMPCollapseClause (Expr *NumForLoops, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'collapse' clause.
 
OMPClauseActOnOpenMPOrderedClause (SourceLocation StartLoc, SourceLocation EndLoc, SourceLocation LParenLoc=SourceLocation(), Expr *NumForLoops=nullptr)
 Called on well-formed 'ordered' clause.
 
OMPClauseActOnOpenMPGrainsizeClause (OpenMPGrainsizeClauseModifier Modifier, Expr *Size, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)
 Called on well-formed 'grainsize' clause.
 
OMPClauseActOnOpenMPNumTasksClause (OpenMPNumTasksClauseModifier Modifier, Expr *NumTasks, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)
 Called on well-formed 'num_tasks' clause.
 
OMPClauseActOnOpenMPHintClause (Expr *Hint, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'hint' clause.
 
OMPClauseActOnOpenMPDetachClause (Expr *Evt, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'detach' clause.
 
OMPClauseActOnOpenMPSimpleClause (OpenMPClauseKind Kind, unsigned Argument, SourceLocation ArgumentLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 
OMPClauseActOnOpenMPWhenClause (OMPTraitInfo &TI, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'when' clause.
 
OMPClauseActOnOpenMPDefaultClause (llvm::omp::DefaultKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'default' clause.
 
OMPClauseActOnOpenMPProcBindClause (llvm::omp::ProcBindKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'proc_bind' clause.
 
OMPClauseActOnOpenMPOrderClause (OpenMPOrderClauseModifier Modifier, OpenMPOrderClauseKind Kind, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation MLoc, SourceLocation KindLoc, SourceLocation EndLoc)
 Called on well-formed 'order' clause.
 
OMPClauseActOnOpenMPUpdateClause (OpenMPDependClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'update' clause.
 
OMPClauseActOnOpenMPHoldsClause (Expr *E, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'holds' clause.
 
OMPClauseActOnOpenMPDirectivePresenceClause (OpenMPClauseKind CK, llvm::ArrayRef< OpenMPDirectiveKind > DKVec, SourceLocation Loc, SourceLocation LLoc, SourceLocation RLoc)
 Called on well-formed 'absent' or 'contains' clauses.
 
OMPClauseActOnOpenMPNullaryAssumptionClause (OpenMPClauseKind CK, SourceLocation Loc, SourceLocation RLoc)
 
OMPClauseActOnOpenMPSingleExprWithArgClause (OpenMPClauseKind Kind, ArrayRef< unsigned > Arguments, Expr *Expr, SourceLocation StartLoc, SourceLocation LParenLoc, ArrayRef< SourceLocation > ArgumentsLoc, SourceLocation DelimLoc, SourceLocation EndLoc)
 
OMPClauseActOnOpenMPScheduleClause (OpenMPScheduleClauseModifier M1, OpenMPScheduleClauseModifier M2, OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation M1Loc, SourceLocation M2Loc, SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc)
 Called on well-formed 'schedule' clause.
 
OMPClauseActOnOpenMPClause (OpenMPClauseKind Kind, SourceLocation StartLoc, SourceLocation EndLoc)
 
OMPClauseActOnOpenMPNowaitClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'nowait' clause.
 
OMPClauseActOnOpenMPUntiedClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'untied' clause.
 
OMPClauseActOnOpenMPMergeableClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'mergeable' clause.
 
OMPClauseActOnOpenMPReadClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'read' clause.
 
OMPClauseActOnOpenMPWriteClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'write' clause.
 
OMPClauseActOnOpenMPUpdateClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'update' clause.
 
OMPClauseActOnOpenMPCaptureClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'capture' clause.
 
OMPClauseActOnOpenMPCompareClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'compare' clause.
 
OMPClauseActOnOpenMPFailClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'fail' clause.
 
OMPClauseActOnOpenMPFailClause (OpenMPClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 
OMPClauseActOnOpenMPSeqCstClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'seq_cst' clause.
 
OMPClauseActOnOpenMPAcqRelClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'acq_rel' clause.
 
OMPClauseActOnOpenMPAcquireClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'acquire' clause.
 
OMPClauseActOnOpenMPReleaseClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'release' clause.
 
OMPClauseActOnOpenMPRelaxedClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'relaxed' clause.
 
OMPClauseActOnOpenMPWeakClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'weak' clause.
 
OMPClauseActOnOpenMPInitClause (Expr *InteropVar, OMPInteropInfo &InteropInfo, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)
 Called on well-formed 'init' clause.
 
OMPClauseActOnOpenMPUseClause (Expr *InteropVar, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)
 Called on well-formed 'use' clause.
 
OMPClauseActOnOpenMPDestroyClause (Expr *InteropVar, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)
 Called on well-formed 'destroy' clause.
 
OMPClauseActOnOpenMPNovariantsClause (Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'novariants' clause.
 
OMPClauseActOnOpenMPNocontextClause (Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'nocontext' clause.
 
OMPClauseActOnOpenMPFilterClause (Expr *ThreadID, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'filter' clause.
 
OMPClauseActOnOpenMPThreadsClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'threads' clause.
 
OMPClauseActOnOpenMPSIMDClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'simd' clause.
 
OMPClauseActOnOpenMPNogroupClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'nogroup' clause.
 
OMPClauseActOnOpenMPUnifiedAddressClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'unified_address' clause.
 
OMPClauseActOnOpenMPUnifiedSharedMemoryClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'unified_address' clause.
 
OMPClauseActOnOpenMPReverseOffloadClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'reverse_offload' clause.
 
OMPClauseActOnOpenMPDynamicAllocatorsClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on well-formed 'dynamic_allocators' clause.
 
OMPClauseActOnOpenMPAtomicDefaultMemOrderClause (OpenMPAtomicDefaultMemOrderClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'atomic_default_mem_order' clause.
 
OMPClauseActOnOpenMPAtClause (OpenMPAtClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'at' clause.
 
OMPClauseActOnOpenMPSeverityClause (OpenMPSeverityClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'severity' clause.
 
OMPClauseActOnOpenMPMessageClause (Expr *MS, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'message' clause.
 
OMPClauseActOnOpenMPVarListClause (OpenMPClauseKind Kind, ArrayRef< Expr * > Vars, const OMPVarListLocTy &Locs, OpenMPVarListDataTy &Data)
 
OMPClauseActOnOpenMPInclusiveClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'inclusive' clause.
 
OMPClauseActOnOpenMPExclusiveClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'exclusive' clause.
 
OMPClauseActOnOpenMPAllocateClause (Expr *Allocator, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation ColonLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'allocate' clause.
 
OMPClauseActOnOpenMPPrivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'private' clause.
 
OMPClauseActOnOpenMPFirstprivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'firstprivate' clause.
 
OMPClauseActOnOpenMPLastprivateClause (ArrayRef< Expr * > VarList, OpenMPLastprivateModifier LPKind, SourceLocation LPKindLoc, SourceLocation ColonLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'lastprivate' clause.
 
OMPClauseActOnOpenMPSharedClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'shared' clause.
 
OMPClauseActOnOpenMPReductionClause (ArrayRef< Expr * > VarList, OpenMPReductionClauseModifier Modifier, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions=std::nullopt)
 Called on well-formed 'reduction' clause.
 
OMPClauseActOnOpenMPTaskReductionClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions=std::nullopt)
 Called on well-formed 'task_reduction' clause.
 
OMPClauseActOnOpenMPInReductionClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions=std::nullopt)
 Called on well-formed 'in_reduction' clause.
 
OMPClauseActOnOpenMPLinearClause (ArrayRef< Expr * > VarList, Expr *Step, SourceLocation StartLoc, SourceLocation LParenLoc, OpenMPLinearClauseKind LinKind, SourceLocation LinLoc, SourceLocation ColonLoc, SourceLocation StepModifierLoc, SourceLocation EndLoc)
 Called on well-formed 'linear' clause.
 
OMPClauseActOnOpenMPAlignedClause (ArrayRef< Expr * > VarList, Expr *Alignment, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc)
 Called on well-formed 'aligned' clause.
 
OMPClauseActOnOpenMPCopyinClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'copyin' clause.
 
OMPClauseActOnOpenMPCopyprivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'copyprivate' clause.
 
OMPClauseActOnOpenMPFlushClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'flush' pseudo clause.
 
OMPClauseActOnOpenMPDepobjClause (Expr *Depobj, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'depobj' pseudo clause.
 
OMPClauseActOnOpenMPDependClause (const OMPDependClause::DependDataTy &Data, Expr *DepModifier, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'depend' clause.
 
OMPClauseActOnOpenMPDeviceClause (OpenMPDeviceClauseModifier Modifier, Expr *Device, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)
 Called on well-formed 'device' clause.
 
OMPClauseActOnOpenMPMapClause (Expr *IteratorModifier, ArrayRef< OpenMPMapModifierKind > MapTypeModifiers, ArrayRef< SourceLocation > MapTypeModifiersLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId, OpenMPMapClauseKind MapType, bool IsMapTypeImplicit, SourceLocation MapLoc, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, bool NoDiagnose=false, ArrayRef< Expr * > UnresolvedMappers=std::nullopt)
 Called on well-formed 'map' clause.
 
OMPClauseActOnOpenMPNumTeamsClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'num_teams' clause.
 
OMPClauseActOnOpenMPThreadLimitClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'thread_limit' clause.
 
OMPClauseActOnOpenMPPriorityClause (Expr *Priority, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'priority' clause.
 
OMPClauseActOnOpenMPDistScheduleClause (OpenMPDistScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc)
 Called on well-formed 'dist_schedule' clause.
 
OMPClauseActOnOpenMPDefaultmapClause (OpenMPDefaultmapClauseModifier M, OpenMPDefaultmapClauseKind Kind, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation MLoc, SourceLocation KindLoc, SourceLocation EndLoc)
 Called on well-formed 'defaultmap' clause.
 
OMPClauseActOnOpenMPToClause (ArrayRef< OpenMPMotionModifierKind > MotionModifiers, ArrayRef< SourceLocation > MotionModifiersLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, ArrayRef< Expr * > UnresolvedMappers=std::nullopt)
 Called on well-formed 'to' clause.
 
OMPClauseActOnOpenMPFromClause (ArrayRef< OpenMPMotionModifierKind > MotionModifiers, ArrayRef< SourceLocation > MotionModifiersLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, ArrayRef< Expr * > UnresolvedMappers=std::nullopt)
 Called on well-formed 'from' clause.
 
OMPClauseActOnOpenMPUseDevicePtrClause (ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)
 Called on well-formed 'use_device_ptr' clause.
 
OMPClauseActOnOpenMPUseDeviceAddrClause (ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)
 Called on well-formed 'use_device_addr' clause.
 
OMPClauseActOnOpenMPIsDevicePtrClause (ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)
 Called on well-formed 'is_device_ptr' clause.
 
OMPClauseActOnOpenMPHasDeviceAddrClause (ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)
 Called on well-formed 'has_device_addr' clause.
 
OMPClauseActOnOpenMPNontemporalClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'nontemporal' clause.
 
OMPClauseActOnOpenMPUsesAllocatorClause (SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, ArrayRef< UsesAllocatorsData > Data)
 Called on well-formed 'uses_allocators' clause.
 
OMPClauseActOnOpenMPAffinityClause (SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, Expr *Modifier, ArrayRef< Expr * > Locators)
 Called on well-formed 'affinity' clause.
 
OMPClauseActOnOpenMPBindClause (OpenMPBindClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on a well-formed 'bind' clause.
 
OMPClauseActOnOpenMPXDynCGroupMemClause (Expr *Size, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on a well-formed 'ompx_dyn_cgroup_mem' clause.
 
OMPClauseActOnOpenMPDoacrossClause (OpenMPDoacrossClauseModifier DepType, SourceLocation DepLoc, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on well-formed 'doacross' clause.
 
OMPClauseActOnOpenMPXAttributeClause (ArrayRef< const Attr * > Attrs, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Called on a well-formed 'ompx_attribute' clause.
 
OMPClauseActOnOpenMPXBareClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Called on a well-formed 'ompx_bare' clause.
 
ExprResult ActOnOMPArraySectionExpr (Expr *Base, SourceLocation LBLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBLoc)
 
ExprResult ActOnOMPArrayShapingExpr (Expr *Base, SourceLocation LParenLoc, SourceLocation RParenLoc, ArrayRef< Expr * > Dims, ArrayRef< SourceRange > Brackets)
 
ExprResult ActOnOMPIteratorExpr (Scope *S, SourceLocation IteratorKwLoc, SourceLocation LLoc, SourceLocation RLoc, ArrayRef< OMPIteratorData > Data)
 
void handleOMPAssumeAttr (Decl *D, const ParsedAttr &AL)
 
- Public Member Functions inherited from clang::SemaBase
 SemaBase (Sema &S)
 
ASTContextgetASTContext () const
 
DiagnosticsEnginegetDiagnostics () const
 
const LangOptionsgetLangOpts () const
 
SemaDiagnosticBuilder Diag (SourceLocation Loc, unsigned DiagID, bool DeferHint=false)
 Emit a diagnostic.
 
SemaDiagnosticBuilder Diag (SourceLocation Loc, const PartialDiagnostic &PD, bool DeferHint=false)
 Emit a partial diagnostic.
 
PartialDiagnostic PDiag (unsigned DiagID=0)
 Build a partial diagnostic.
 

Static Public Member Functions

static int getOpenMPCaptureLevels (OpenMPDirectiveKind Kind)
 Return the number of captured regions created for an OpenMP directive.
 

Friends

class Parser
 
class Sema
 

Additional Inherited Members

- Public Attributes inherited from clang::SemaBase
SemaSemaRef
 

Detailed Description

Definition at line 48 of file SemaOpenMP.h.

Member Typedef Documentation

◆ CapturedParamNameType

using clang::SemaOpenMP::CapturedParamNameType = std::pair<StringRef, QualType>

Definition at line 56 of file SemaOpenMP.h.

◆ DeclGroupPtrTy

Definition at line 55 of file SemaOpenMP.h.

◆ VarsWithInheritedDSAType

using clang::SemaOpenMP::VarsWithInheritedDSAType = llvm::SmallDenseMap<const ValueDecl *, const Expr *, 4>

Definition at line 430 of file SemaOpenMP.h.

Constructor & Destructor Documentation

◆ SemaOpenMP()

SemaOpenMP::SemaOpenMP ( Sema S)

Definition at line 24199 of file SemaOpenMP.cpp.

Member Function Documentation

◆ ActOnFinishedFunctionDefinitionInOpenMPAssumeScope()

void SemaOpenMP::ActOnFinishedFunctionDefinitionInOpenMPAssumeScope ( Decl D)

Act on D, a function definition inside of an omp [begin/end] assumes.

Definition at line 6978 of file SemaOpenMP.cpp.

References clang::Decl::addAttr(), D, clang::Sema::inTemplateInstantiation(), clang::Decl::isInvalidDecl(), and clang::SemaBase::SemaRef.

Referenced by clang::Sema::ActOnStartOfLambdaDefinition(), and clang::Sema::CheckFunctionDeclaration().

◆ ActOnFinishedFunctionDefinitionInOpenMPDeclareVariantScope()

void SemaOpenMP::ActOnFinishedFunctionDefinitionInOpenMPDeclareVariantScope ( Decl D,
SmallVectorImpl< FunctionDecl * > &  Bases 
)

Register D as specialization of all base functions in Bases in the current omp begin/end declare variant scope.

Definition at line 7086 of file SemaOpenMP.cpp.

References clang::DeclRefExpr::Create(), D, clang::SemaBase::getASTContext(), clang::Decl::getLocation(), clang::ValueDecl::getType(), clang::SemaBase::SemaRef, clang::Unevaluated, clang::Sema::Unevaluated, and clang::VK_PRValue.

Referenced by clang::Sema::ActOnDeclarator(), and clang::Sema::ActOnStartOfFunctionDef().

◆ ActOnFinishedOpenMPDeclareTargetContext()

void SemaOpenMP::ActOnFinishedOpenMPDeclareTargetContext ( DeclareTargetContextInfo DTCI)

Called once a target context is completed, that can be when a '#pragma omp end declare target' was encountered or when a '#pragma omp declare target' without declaration-definition-seq was encountered.

Definition at line 22422 of file SemaOpenMP.cpp.

References ActOnOpenMPDeclareTargetName(), and clang::SemaOpenMP::DeclareTargetContextInfo::ExplicitlyMapped.

◆ ActOnOMPArraySectionExpr()

ExprResult SemaOpenMP::ActOnOMPArraySectionExpr ( Expr Base,
SourceLocation  LBLoc,
Expr LowerBound,
SourceLocation  ColonLocFirst,
SourceLocation  ColonLocSecond,
Expr Length,
Expr Stride,
SourceLocation  RBLoc 
)

◆ ActOnOMPArrayShapingExpr()

ExprResult SemaOpenMP::ActOnOMPArrayShapingExpr ( Expr Base,
SourceLocation  LParenLoc,
SourceLocation  RParenLoc,
ArrayRef< Expr * >  Dims,
ArrayRef< SourceRange Brackets 
)

◆ ActOnOMPIteratorExpr()

ExprResult SemaOpenMP::ActOnOMPIteratorExpr ( Scope S,
SourceLocation  IteratorKwLoc,
SourceLocation  LLoc,
SourceLocation  RLoc,
ArrayRef< OMPIteratorData Data 
)

Act on the iterator variable declaration.

Definition at line 23862 of file SemaOpenMP.cpp.

References clang::Sema::AA_Converting, clang::Sema::ActOnConditionalOp(), clang::Sema::ActOnFinishFullExpr(), clang::Sema::ActOnIntegerConstant(), ActOnOpenMPIteratorVarDecl(), clang::DeclContext::addDecl(), clang::OMPIteratorExpr::IteratorDefinition::AssignmentLoc, clang::OMPIteratorExpr::IteratorRange::Begin, Begin, clang::Sema::BuildDeclRefExpr(), clang::OMPIteratorExpr::IteratorDefinition::ColonLoc, clang::OMPIteratorHelperData::CounterUpdate, clang::OMPIteratorHelperData::CounterVD, clang::VarDecl::Create(), clang::OMPIteratorExpr::Create(), clang::Sema::CreateBuiltinBinOp(), clang::Sema::CreateBuiltinUnaryOp(), clang::Sema::CurContext, D, clang::Data, clang::Sema::DefaultLvalueConversion(), clang::SemaBase::Diag(), clang::OMPIteratorExpr::IteratorRange::End, clang::ExprError(), clang::Sema::FilterLookupForScope(), clang::ActionResult< PtrTy, Compress >::get(), clang::SemaBase::getASTContext(), clang::TypeLoc::getBeginLoc(), clang::Decl::getBeginLoc(), clang::NamedDecl::getDeclName(), clang::Expr::getExprLoc(), clang::Expr::getIntegerConstantExpr(), clang::Decl::getLocation(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::Sema::GetTypeFromParser(), clang::TypeSourceInfo::getTypeLoc(), clang::ASTContext::IntTy, clang::DeclContext::isDependentContext(), clang::Type::isIntegralType(), clang::Expr::isTypeDependent(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::OMPIteratorExpr::IteratorDefinition::IteratorDecl, clang::Sema::LookupName(), clang::Sema::LookupOrdinaryName, clang::ASTContext::OMPIteratorTy, clang::Sema::PerformImplicitConversion(), Previous, clang::Sema::PushOnScopeChains(), clang::OMPIteratorExpr::IteratorDefinition::Range, clang::Result, clang::SC_None, clang::OMPIteratorExpr::IteratorDefinition::SecondColonLoc, clang::SemaBase::SemaRef, clang::Decl::setImplicit(), clang::OMPIteratorExpr::IteratorRange::Step, clang::OMPIteratorHelperData::Update, clang::OMPIteratorHelperData::Upper, and clang::VK_LValue.

Referenced by clang::TreeTransform< Derived >::RebuildOMPIteratorExpr().

◆ ActOnOpenMPAcqRelClause()

OMPClause * SemaOpenMP::ActOnOpenMPAcqRelClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'acq_rel' clause.

Definition at line 16631 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPAcquireClause()

OMPClause * SemaOpenMP::ActOnOpenMPAcquireClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'acquire' clause.

Definition at line 16636 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPAffinityClause()

OMPClause * SemaOpenMP::ActOnOpenMPAffinityClause ( SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  ColonLoc,
SourceLocation  EndLoc,
Expr Modifier,
ArrayRef< Expr * >  Locators 
)

◆ ActOnOpenMPAlignClause()

OMPClause * SemaOpenMP::ActOnOpenMPAlignClause ( Expr Alignment,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPAlignedClause()

OMPClause * SemaOpenMP::ActOnOpenMPAlignedClause ( ArrayRef< Expr * >  VarList,
Expr Alignment,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  ColonLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPAllocateClause()

OMPClause * SemaOpenMP::ActOnOpenMPAllocateClause ( Expr Allocator,
ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  ColonLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPAllocateDirective()

SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPAllocateDirective ( SourceLocation  Loc,
ArrayRef< Expr * >  VarList,
ArrayRef< OMPClause * >  Clauses,
DeclContext Owner = nullptr 
)

◆ ActOnOpenMPAllocatorClause()

OMPClause * SemaOpenMP::ActOnOpenMPAllocatorClause ( Expr Allocator,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPAssumeDirective()

StmtResult SemaOpenMP::ActOnOpenMPAssumeDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Process an OpenMP assume directive.

Parameters
ClausesArray of clauses for directive.
AStmtThe associated statement.
StartLocThe start location.
EndLocThe end location.

Definition at line 3559 of file SemaOpenMP.cpp.

References clang::OMPAssumeDirective::Create(), clang::SemaBase::getASTContext(), and clang::StmtError().

Referenced by ActOnOpenMPInformationalDirective().

◆ ActOnOpenMPAssumesDirective()

void SemaOpenMP::ActOnOpenMPAssumesDirective ( SourceLocation  Loc,
OpenMPDirectiveKind  DKind,
ArrayRef< std::string >  Assumptions,
bool  SkippedClauses 
)

◆ ActOnOpenMPAtClause()

OMPClause * SemaOpenMP::ActOnOpenMPAtClause ( OpenMPAtClauseKind  Kind,
SourceLocation  KindLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPAtomicDefaultMemOrderClause()

OMPClause * SemaOpenMP::ActOnOpenMPAtomicDefaultMemOrderClause ( OpenMPAtomicDefaultMemOrderClauseKind  Kind,
SourceLocation  KindLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'atomic_default_mem_order' clause.

Definition at line 15943 of file SemaOpenMP.cpp.

References clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), getListOfPossibleValues(), and clang::OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown.

Referenced by ActOnOpenMPSimpleClause().

◆ ActOnOpenMPAtomicDirective()

StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPBarrierDirective()

StmtResult SemaOpenMP::ActOnOpenMPBarrierDirective ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp barrier'.

Definition at line 11024 of file SemaOpenMP.cpp.

References clang::OMPBarrierDirective::Create(), and clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPBeginDeclareVariant()

void SemaOpenMP::ActOnOpenMPBeginDeclareVariant ( SourceLocation  Loc,
OMPTraitInfo TI 
)

Handle a omp begin declare variant.

Definition at line 2689 of file SemaOpenMP.cpp.

◆ ActOnOpenMPBindClause()

OMPClause * SemaOpenMP::ActOnOpenMPBindClause ( OpenMPBindClauseKind  Kind,
SourceLocation  KindLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPCall()

ExprResult SemaOpenMP::ActOnOpenMPCall ( ExprResult  Call,
Scope Scope,
SourceLocation  LParenLoc,
MultiExprArg  ArgExprs,
SourceLocation  RParenLoc,
Expr ExecConfig 
)

◆ ActOnOpenMPCancelDirective()

StmtResult SemaOpenMP::ActOnOpenMPCancelDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
OpenMPDirectiveKind  CancelRegion 
)

Called on well-formed '#pragma omp cancel'.

Definition at line 13210 of file SemaOpenMP.cpp.

References clang::OMPCancelDirective::Create(), clang::SemaBase::Diag(), DSAStack, clang::SemaBase::getASTContext(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPCancellationPointDirective()

StmtResult SemaOpenMP::ActOnOpenMPCancellationPointDirective ( SourceLocation  StartLoc,
SourceLocation  EndLoc,
OpenMPDirectiveKind  CancelRegion 
)

Called on well-formed '#pragma omp cancellation point'.

Definition at line 13195 of file SemaOpenMP.cpp.

References clang::OMPCancellationPointDirective::Create(), clang::SemaBase::Diag(), DSAStack, clang::SemaBase::getASTContext(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPCanonicalLoop()

StmtResult SemaOpenMP::ActOnOpenMPCanonicalLoop ( Stmt AStmt)

◆ ActOnOpenMPCaptureClause()

OMPClause * SemaOpenMP::ActOnOpenMPCaptureClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'capture' clause.

Definition at line 16597 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPClause()

OMPClause * SemaOpenMP::ActOnOpenMPClause ( OpenMPClauseKind  Kind,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPCollapseClause()

OMPClause * SemaOpenMP::ActOnOpenMPCollapseClause ( Expr NumForLoops,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPCompareClause()

OMPClause * SemaOpenMP::ActOnOpenMPCompareClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'compare' clause.

Definition at line 16602 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPCopyinClause()

OMPClause * SemaOpenMP::ActOnOpenMPCopyinClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPCopyprivateClause()

OMPClause * SemaOpenMP::ActOnOpenMPCopyprivateClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPCriticalDirective()

StmtResult SemaOpenMP::ActOnOpenMPCriticalDirective ( const DeclarationNameInfo DirName,
ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDeclareMapperDirective()

SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareMapperDirective ( Scope S,
DeclContext DC,
DeclarationName  Name,
QualType  MapperType,
SourceLocation  StartLoc,
DeclarationName  VN,
AccessSpecifier  AS,
Expr MapperVarRef,
ArrayRef< OMPClause * >  Clauses,
Decl PrevDeclInScope = nullptr 
)

◆ ActOnOpenMPDeclareMapperDirectiveVarDecl()

ExprResult SemaOpenMP::ActOnOpenMPDeclareMapperDirectiveVarDecl ( Scope S,
QualType  MapperType,
SourceLocation  StartLoc,
DeclarationName  VN 
)

◆ ActOnOpenMPDeclareMapperType()

QualType SemaOpenMP::ActOnOpenMPDeclareMapperType ( SourceLocation  TyLoc,
TypeResult  ParsedType 
)

◆ ActOnOpenMPDeclareMapperVarDecl()

TypeResult SemaOpenMP::ActOnOpenMPDeclareMapperVarDecl ( Scope S,
Declarator D 
)

◆ ActOnOpenMPDeclareReductionCombinerEnd()

void SemaOpenMP::ActOnOpenMPDeclareReductionCombinerEnd ( Decl D,
Expr Combiner 
)

◆ ActOnOpenMPDeclareReductionCombinerStart()

void SemaOpenMP::ActOnOpenMPDeclareReductionCombinerStart ( Scope S,
Decl D 
)

◆ ActOnOpenMPDeclareReductionDirectiveEnd()

SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareReductionDirectiveEnd ( Scope S,
DeclGroupPtrTy  DeclReductions,
bool  IsValid 
)

Called at the end of '#pragma omp declare reduction'.

Definition at line 21838 of file SemaOpenMP.cpp.

References D, clang::OpaquePtr< PtrTy >::get(), clang::Sema::PushOnScopeChains(), clang::SemaBase::SemaRef, and clang::Decl::setInvalidDecl().

◆ ActOnOpenMPDeclareReductionDirectiveStart()

SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareReductionDirectiveStart ( Scope S,
DeclContext DC,
DeclarationName  Name,
ArrayRef< std::pair< QualType, SourceLocation > >  ReductionTypes,
AccessSpecifier  AS,
Decl PrevDeclInScope = nullptr 
)

◆ ActOnOpenMPDeclareReductionInitializerEnd()

void SemaOpenMP::ActOnOpenMPDeclareReductionInitializerEnd ( Decl D,
Expr Initializer,
VarDecl OmpPrivParm 
)

◆ ActOnOpenMPDeclareReductionInitializerStart()

VarDecl * SemaOpenMP::ActOnOpenMPDeclareReductionInitializerStart ( Scope S,
Decl D 
)

◆ ActOnOpenMPDeclareReductionType()

QualType SemaOpenMP::ActOnOpenMPDeclareReductionType ( SourceLocation  TyLoc,
TypeResult  ParsedType 
)

◆ ActOnOpenMPDeclareSimdDirective()

SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareSimdDirective ( DeclGroupPtrTy  DG,
OMPDeclareSimdDeclAttr::BranchStateTy  BS,
Expr Simdlen,
ArrayRef< Expr * >  Uniforms,
ArrayRef< Expr * >  Aligneds,
ArrayRef< Expr * >  Alignments,
ArrayRef< Expr * >  Linears,
ArrayRef< unsigned LinModifiers,
ArrayRef< Expr * >  Steps,
SourceRange  SR 
)

◆ ActOnOpenMPDeclareTargetInitializer()

void SemaOpenMP::ActOnOpenMPDeclareTargetInitializer ( Decl D)

Adds OMPDeclareTargetDeclAttr to referenced variables in declare target directive.

Adding OMPDeclareTargetDeclAttr to variables with static storage duration that are referenced in the initializer expression list of variables with static storage duration in declare target directive.

Definition at line 22693 of file SemaOpenMP.cpp.

References GlobalDeclRefChecker::declareTargetInitializer().

Referenced by ActOnOpenMPDeclareTargetName(), and clang::Sema::FinalizeDeclaratorGroup().

◆ ActOnOpenMPDeclareTargetName()

void SemaOpenMP::ActOnOpenMPDeclareTargetName ( NamedDecl ND,
SourceLocation  Loc,
OMPDeclareTargetDeclAttr::MapTypeTy  MT,
DeclareTargetContextInfo DTCI 
)

◆ ActOnOpenMPDeclareVariantDirective()

void SemaOpenMP::ActOnOpenMPDeclareVariantDirective ( FunctionDecl FD,
Expr VariantRef,
OMPTraitInfo TI,
ArrayRef< Expr * >  AdjustArgsNothing,
ArrayRef< Expr * >  AdjustArgsNeedDevicePtr,
ArrayRef< OMPInteropInfo AppendArgs,
SourceLocation  AdjustArgsLoc,
SourceLocation  AppendArgsLoc,
SourceRange  SR 
)

Called on well-formed '#pragma omp declare variant' after parsing of the associated method/function.

Parameters
FDFunction declaration to which declare variant directive is applied to.
VariantRefExpression that references the variant function, which must be used instead of the original one, specified in DG.
TIThe context traits associated with the function variant.
AdjustArgsNothingThe list of 'nothing' arguments.
AdjustArgsNeedDevicePtrThe list of 'need_device_ptr' arguments.
AppendArgsThe list of 'append_args' arguments.
AdjustArgsLocThe Location of an 'adjust_args' clause.
AppendArgsLocThe Location of an 'append_args' clause.
SRThe SourceRange of the 'declare variant' directive.

Definition at line 7534 of file SemaOpenMP.cpp.

References clang::Decl::addAttr(), clang::SemaBase::Diag(), E, clang::SemaBase::getASTContext(), clang::OMPTraitInfo::getAsVariantMatchInfo(), clang::VarDecl::getCanonicalDecl(), clang::Expr::getExprLoc(), clang::FunctionDecl::getNumParams(), clang::FunctionDecl::getParamDecl(), and clang::Expr::IgnoreParenImpCasts().

Referenced by instantiateOMPDeclareVariantAttr().

◆ ActOnOpenMPDefaultClause()

OMPClause * SemaOpenMP::ActOnOpenMPDefaultClause ( llvm::omp::DefaultKind  Kind,
SourceLocation  KindLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDefaultmapClause()

OMPClause * SemaOpenMP::ActOnOpenMPDefaultmapClause ( OpenMPDefaultmapClauseModifier  M,
OpenMPDefaultmapClauseKind  Kind,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  MLoc,
SourceLocation  KindLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDependClause()

OMPClause * SemaOpenMP::ActOnOpenMPDependClause ( const OMPDependClause::DependDataTy Data,
Expr DepModifier,
ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDepobjClause()

OMPClause * SemaOpenMP::ActOnOpenMPDepobjClause ( Expr Depobj,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDepobjDirective()

StmtResult SemaOpenMP::ActOnOpenMPDepobjDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp depobj'.

Definition at line 11133 of file SemaOpenMP.cpp.

References clang::OMPDepobjDirective::Create(), clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPDestroyClause()

OMPClause * SemaOpenMP::ActOnOpenMPDestroyClause ( Expr InteropVar,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  VarLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDetachClause()

OMPClause * SemaOpenMP::ActOnOpenMPDetachClause ( Expr Evt,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDeviceClause()

OMPClause * SemaOpenMP::ActOnOpenMPDeviceClause ( OpenMPDeviceClauseModifier  Modifier,
Expr Device,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  ModifierLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDirectivePresenceClause()

OMPClause * SemaOpenMP::ActOnOpenMPDirectivePresenceClause ( OpenMPClauseKind  CK,
llvm::ArrayRef< OpenMPDirectiveKind DKVec,
SourceLocation  Loc,
SourceLocation  LLoc,
SourceLocation  RLoc 
)

Called on well-formed 'absent' or 'contains' clauses.

Definition at line 23573 of file SemaOpenMP.cpp.

References clang::OMPAbsentClause::Create(), clang::OMPContainsClause::Create(), clang::SemaBase::getASTContext(), and Loc.

◆ ActOnOpenMPDispatchDirective()

StmtResult SemaOpenMP::ActOnOpenMPDispatchDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDistributeDirective()

StmtResult SemaOpenMP::ActOnOpenMPDistributeDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPDistributeParallelForDirective()

StmtResult SemaOpenMP::ActOnOpenMPDistributeParallelForDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPDistributeParallelForSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPDistributeParallelForSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPDistributeSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPDistributeSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPDistScheduleClause()

OMPClause * SemaOpenMP::ActOnOpenMPDistScheduleClause ( OpenMPDistScheduleClauseKind  Kind,
Expr ChunkSize,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  KindLoc,
SourceLocation  CommaLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDoacrossClause()

OMPClause * SemaOpenMP::ActOnOpenMPDoacrossClause ( OpenMPDoacrossClauseModifier  DepType,
SourceLocation  DepLoc,
SourceLocation  ColonLoc,
ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPDynamicAllocatorsClause()

OMPClause * SemaOpenMP::ActOnOpenMPDynamicAllocatorsClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'dynamic_allocators' clause.

Definition at line 16688 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPEndAssumesDirective()

void SemaOpenMP::ActOnOpenMPEndAssumesDirective ( )

Called on well-formed '#pragma omp end assumes'.

Definition at line 3554 of file SemaOpenMP.cpp.

References isInOpenMPAssumeScope().

◆ ActOnOpenMPEndDeclareTargetDirective()

const SemaOpenMP::DeclareTargetContextInfo SemaOpenMP::ActOnOpenMPEndDeclareTargetDirective ( )

Called at the end of target region i.e. '#pragma omp end declare target'.

Definition at line 22416 of file SemaOpenMP.cpp.

◆ ActOnOpenMPEndDeclareVariant()

void SemaOpenMP::ActOnOpenMPEndDeclareVariant ( )

Handle a omp end declare variant.

Definition at line 2694 of file SemaOpenMP.cpp.

References isInOpenMPDeclareVariantScope().

◆ ActOnOpenMPErrorDirective()

StmtResult SemaOpenMP::ActOnOpenMPErrorDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
bool  InExContext = true 
)

Called on well-formed '#pragma omp error'.

Error direcitive is allowed in both declared and excutable contexts. Adding InExContext to identify which context is called from.

Definition at line 11029 of file SemaOpenMP.cpp.

References clang::OMPErrorDirective::Create(), clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), clang::OMPAtClause::getAtKind(), clang::OMPAtClause::getAtKindKwLoc(), clang::OMPMessageClause::getMessageString(), clang::OMPSeverityClause::getSeverityKind(), clang::OMPSeverityClause::getSeverityKindKwLoc(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPExclusiveClause()

OMPClause * SemaOpenMP::ActOnOpenMPExclusiveClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPExecutableDirective()

StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective ( OpenMPDirectiveKind  Kind,
const DeclarationNameInfo DirName,
OpenMPDirectiveKind  CancelRegion,
ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Definition at line 5967 of file SemaOpenMP.cpp.

References ActOnOpenMPAtomicDirective(), ActOnOpenMPBarrierDirective(), ActOnOpenMPBindClause(), ActOnOpenMPCancelDirective(), ActOnOpenMPCancellationPointDirective(), ActOnOpenMPCriticalDirective(), ActOnOpenMPDepobjDirective(), ActOnOpenMPDispatchDirective(), ActOnOpenMPDistributeDirective(), ActOnOpenMPDistributeParallelForDirective(), ActOnOpenMPDistributeParallelForSimdDirective(), ActOnOpenMPDistributeSimdDirective(), ActOnOpenMPErrorDirective(), ActOnOpenMPFirstprivateClause(), ActOnOpenMPFlushDirective(), ActOnOpenMPForDirective(), ActOnOpenMPForSimdDirective(), ActOnOpenMPGenericLoopDirective(), ActOnOpenMPInterchangeDirective(), ActOnOpenMPInteropDirective(), ActOnOpenMPMapClause(), ActOnOpenMPMaskedDirective(), ActOnOpenMPMaskedTaskLoopDirective(), ActOnOpenMPMaskedTaskLoopSimdDirective(), ActOnOpenMPMasterDirective(), ActOnOpenMPMasterTaskLoopDirective(), ActOnOpenMPMasterTaskLoopSimdDirective(), ActOnOpenMPOrderedDirective(), ActOnOpenMPParallelDirective(), ActOnOpenMPParallelForDirective(), ActOnOpenMPParallelForSimdDirective(), ActOnOpenMPParallelGenericLoopDirective(), ActOnOpenMPParallelMaskedDirective(), ActOnOpenMPParallelMaskedTaskLoopDirective(), ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), ActOnOpenMPParallelMasterDirective(), ActOnOpenMPParallelMasterTaskLoopDirective(), ActOnOpenMPParallelMasterTaskLoopSimdDirective(), ActOnOpenMPParallelSectionsDirective(), ActOnOpenMPPrivateClause(), ActOnOpenMPReverseDirective(), ActOnOpenMPScanDirective(), ActOnOpenMPScopeDirective(), ActOnOpenMPSectionDirective(), ActOnOpenMPSectionsDirective(), ActOnOpenMPSimdDirective(), ActOnOpenMPSingleDirective(), ActOnOpenMPTargetDataDirective(), ActOnOpenMPTargetDirective(), ActOnOpenMPTargetEnterDataDirective(), ActOnOpenMPTargetExitDataDirective(), ActOnOpenMPTargetParallelDirective(), ActOnOpenMPTargetParallelForDirective(), ActOnOpenMPTargetParallelForSimdDirective(), ActOnOpenMPTargetParallelGenericLoopDirective(), ActOnOpenMPTargetSimdDirective(), ActOnOpenMPTargetTeamsDirective(), ActOnOpenMPTargetTeamsDistributeDirective(), ActOnOpenMPTargetTeamsDistributeParallelForDirective(), ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), ActOnOpenMPTargetTeamsDistributeSimdDirective(), ActOnOpenMPTargetTeamsGenericLoopDirective(), ActOnOpenMPTargetUpdateDirective(), ActOnOpenMPTaskDirective(), ActOnOpenMPTaskgroupDirective(), ActOnOpenMPTaskLoopDirective(), ActOnOpenMPTaskLoopSimdDirective(), ActOnOpenMPTaskwaitDirective(), ActOnOpenMPTaskyieldDirective(), ActOnOpenMPTeamsDirective(), ActOnOpenMPTeamsDistributeDirective(), ActOnOpenMPTeamsDistributeParallelForDirective(), ActOnOpenMPTeamsDistributeParallelForSimdDirective(), ActOnOpenMPTeamsDistributeSimdDirective(), ActOnOpenMPTeamsGenericLoopDirective(), ActOnOpenMPTileDirective(), ActOnOpenMPUnrollDirective(), clang::C, checkCancelRegion(), checkIfClauses(), checkNestingOfRegions(), clang::Sema::CurContext, D, clang::SemaBase::Diag(), DSAStack, E, clang::CapturedStmt::getCapturedStmt(), clang::SemaBase::getLangOpts(), getOpenMPCaptureLevels(), clang::getOpenMPCaptureRegions(), clang::HIP, clang::Expr::IgnoreParenImpCasts(), clang::Implicit, clang::DeclContext::isDependentContext(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::isOpenMPCapturingDirective(), clang::isOpenMPExecutableDirective(), clang::isOpenMPParallelDirective(), clang::isOpenMPTargetDataManagementDirective(), clang::isOpenMPTargetExecutionDirective(), clang::isOpenMPTaskingDirective(), clang::isOpenMPTaskLoopDirective(), clang::isOpenMPTeamsDirective(), clang::OMPC_BIND_unknown, clang::OMPC_DEFAULTMAP_unknown, clang::OMPC_MAP_MODIFIER_unknown, P, processImplicitMapsWithDefaultMappers(), clang::SemaBase::SemaRef, and clang::StmtError().

Referenced by clang::TreeTransform< Derived >::RebuildOMPExecutableDirective().

◆ ActOnOpenMPFailClause() [1/2]

OMPClause * SemaOpenMP::ActOnOpenMPFailClause ( OpenMPClauseKind  Kind,
SourceLocation  KindLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPFailClause() [2/2]

OMPClause * SemaOpenMP::ActOnOpenMPFailClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'fail' clause.

Definition at line 16607 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause(), and ActOnOpenMPSimpleClause().

◆ ActOnOpenMPFilterClause()

OMPClause * SemaOpenMP::ActOnOpenMPFilterClause ( Expr ThreadID,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPFinalClause()

OMPClause * SemaOpenMP::ActOnOpenMPFinalClause ( Expr Condition,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPFirstprivateClause()

OMPClause * SemaOpenMP::ActOnOpenMPFirstprivateClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'firstprivate' clause.

Definition at line 17336 of file SemaOpenMP.cpp.

References clang::DeclContext::addDecl(), clang::Sema::AddInitializerToDecl(), buildCapture(), buildDeclRefExpr(), buildPreInits(), buildVarDecl(), clang::C, clang::OMPFirstprivateClause::Create(), clang::InitializationKind::CreateCopy(), clang::Sema::CurContext, D, clang::ASTContext::Deallocate(), clang::VarDecl::DeclarationOnly, clang::Sema::DefaultLvalueConversion(), clang::SemaBase::Diag(), DSAStack, clang::ActionResult< PtrTy, Compress >::get(), clang::SemaBase::getASTContext(), clang::Decl::getAttrs(), clang::ASTContext::getBaseElementType(), clang::DeclRefExpr::getDecl(), clang::SemaBase::getLangOpts(), clang::Decl::getLocation(), clang::QualType::getNonReferenceType(), getPrivateItem(), clang::ValueDecl::getType(), clang::QualType::getUnqualifiedType(), clang::Decl::hasAttrs(), clang::Init, clang::InitializedEntity::InitializeVariable(), clang::Type::isAnyPointerType(), clang::Type::isArrayType(), clang::QualType::isConstant(), clang::DeclContext::isDependentContext(), clang::SourceLocation::isInvalid(), clang::Decl::isInvalidDecl(), isOpenMPCapturedDecl(), clang::isOpenMPDistributeDirective(), clang::isOpenMPParallelDirective(), clang::isOpenMPTargetExecutionDirective(), clang::isOpenMPTaskingDirective(), clang::isOpenMPTeamsDirective(), clang::isOpenMPWorksharingDirective(), clang::Type::isVariablyModifiedType(), clang::InitializationSequence::Perform(), reportOriginalDsa(), clang::Sema::RequireCompleteType(), clang::Result, clang::SemaBase::SemaRef, clang::VarDecl::setInit(), and clang::Decl::setInvalidDecl().

Referenced by ActOnOpenMPExecutableDirective(), ActOnOpenMPVarListClause(), and clang::TreeTransform< Derived >::RebuildOMPFirstprivateClause().

◆ ActOnOpenMPFlushClause()

OMPClause * SemaOpenMP::ActOnOpenMPFlushClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'flush' pseudo clause.

Definition at line 19702 of file SemaOpenMP.cpp.

References clang::OMPFlushClause::Create(), and clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPVarListClause(), and clang::TreeTransform< Derived >::RebuildOMPFlushClause().

◆ ActOnOpenMPFlushDirective()

StmtResult SemaOpenMP::ActOnOpenMPFlushDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPForDirective()

StmtResult SemaOpenMP::ActOnOpenMPForDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPForSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPForSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPFromClause()

OMPClause * SemaOpenMP::ActOnOpenMPFromClause ( ArrayRef< OpenMPMotionModifierKind MotionModifiers,
ArrayRef< SourceLocation MotionModifiersLoc,
CXXScopeSpec MapperIdScopeSpec,
DeclarationNameInfo MapperId,
SourceLocation  ColonLoc,
ArrayRef< Expr * >  VarList,
const OMPVarListLocTy Locs,
ArrayRef< Expr * >  UnresolvedMappers = std::nullopt 
)

◆ ActOnOpenMPFullClause()

OMPClause * SemaOpenMP::ActOnOpenMPFullClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-form 'full' clauses.

Definition at line 16118 of file SemaOpenMP.cpp.

References clang::OMPFullClause::Create(), and clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause(), and clang::TreeTransform< Derived >::RebuildOMPFullClause().

◆ ActOnOpenMPGenericLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPGenericLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPGrainsizeClause()

OMPClause * SemaOpenMP::ActOnOpenMPGrainsizeClause ( OpenMPGrainsizeClauseModifier  Modifier,
Expr Size,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  ModifierLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPHasDeviceAddrClause()

OMPClause * SemaOpenMP::ActOnOpenMPHasDeviceAddrClause ( ArrayRef< Expr * >  VarList,
const OMPVarListLocTy Locs 
)

◆ ActOnOpenMPHintClause()

OMPClause * SemaOpenMP::ActOnOpenMPHintClause ( Expr Hint,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPHoldsClause()

OMPClause * SemaOpenMP::ActOnOpenMPHoldsClause ( Expr E,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'holds' clause.

Definition at line 23567 of file SemaOpenMP.cpp.

References E, and clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPSingleExprClause(), and clang::TreeTransform< Derived >::RebuildOMPHoldsClause().

◆ ActOnOpenMPIdExpression()

ExprResult SemaOpenMP::ActOnOpenMPIdExpression ( Scope CurScope,
CXXScopeSpec ScopeSpec,
const DeclarationNameInfo Id,
OpenMPDirectiveKind  Kind 
)

◆ ActOnOpenMPIfClause()

OMPClause * SemaOpenMP::ActOnOpenMPIfClause ( OpenMPDirectiveKind  NameModifier,
Expr Condition,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  NameModifierLoc,
SourceLocation  ColonLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPInclusiveClause()

OMPClause * SemaOpenMP::ActOnOpenMPInclusiveClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPInformationalDirective()

StmtResult SemaOpenMP::ActOnOpenMPInformationalDirective ( OpenMPDirectiveKind  Kind,
const DeclarationNameInfo DirName,
ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Process an OpenMP informational directive.

Parameters
KindThe directive kind.
DirNameDeclaration name info.
ClausesArray of clauses for directive.
AStmtThe associated statement.
StartLocThe start location.
EndLocThe end location.

Definition at line 6935 of file SemaOpenMP.cpp.

References ActOnOpenMPAssumeDirective(), clang::isOpenMPInformationalDirective(), and clang::StmtError().

Referenced by clang::TreeTransform< Derived >::RebuildOMPInformationalDirective().

◆ ActOnOpenMPInitClause()

OMPClause * SemaOpenMP::ActOnOpenMPInitClause ( Expr InteropVar,
OMPInteropInfo InteropInfo,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  VarLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPInReductionClause()

OMPClause * SemaOpenMP::ActOnOpenMPInReductionClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  ColonLoc,
SourceLocation  EndLoc,
CXXScopeSpec ReductionIdScopeSpec,
const DeclarationNameInfo ReductionId,
ArrayRef< Expr * >  UnresolvedReductions = std::nullopt 
)

◆ ActOnOpenMPInterchangeDirective()

StmtResult SemaOpenMP::ActOnOpenMPInterchangeDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPInteropDirective()

StmtResult SemaOpenMP::ActOnOpenMPInteropDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPIsDevicePtrClause()

OMPClause * SemaOpenMP::ActOnOpenMPIsDevicePtrClause ( ArrayRef< Expr * >  VarList,
const OMPVarListLocTy Locs 
)

◆ ActOnOpenMPIteratorVarDecl()

void SemaOpenMP::ActOnOpenMPIteratorVarDecl ( VarDecl VD)

Definition at line 21987 of file SemaOpenMP.cpp.

References DSAStack.

Referenced by ActOnOMPIteratorExpr().

◆ ActOnOpenMPLastprivateClause()

OMPClause * SemaOpenMP::ActOnOpenMPLastprivateClause ( ArrayRef< Expr * >  VarList,
OpenMPLastprivateModifier  LPKind,
SourceLocation  LPKindLoc,
SourceLocation  ColonLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPLinearClause()

OMPClause * SemaOpenMP::ActOnOpenMPLinearClause ( ArrayRef< Expr * >  VarList,
Expr Step,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
OpenMPLinearClauseKind  LinKind,
SourceLocation  LinLoc,
SourceLocation  ColonLoc,
SourceLocation  StepModifierLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'linear' clause.

Definition at line 19171 of file SemaOpenMP.cpp.

References clang::Sema::ActOnFinishFullExpr(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildBinOp(), buildCapture(), buildDeclRefExpr(), buildPostUpdate(), buildPreInits(), buildVarDecl(), CheckOpenMPLinearDecl(), CheckOpenMPLinearModifier(), clang::Expr::containsUnexpandedParameterPack(), clang::OMPLinearClause::Create(), clang::Sema::CurContext, D, clang::Sema::DefaultLvalueConversion(), clang::SemaBase::Diag(), DSAStack, clang::ActionResult< PtrTy, Compress >::get(), clang::SemaBase::getASTContext(), clang::Decl::getAttrs(), clang::Stmt::getBeginLoc(), clang::Sema::getCurScope(), clang::DeclRefExpr::getDecl(), clang::Expr::getIntegerConstantExpr(), clang::SemaBase::getLangOpts(), getPrivateItem(), clang::Expr::getType(), clang::Decl::hasAttr(), clang::Decl::hasAttrs(), clang::Sema::IgnoredValueConversions(), clang::Init, clang::DeclContext::isDependentContext(), clang::Expr::isInstantiationDependent(), clang::SourceLocation::isInvalid(), clang::ActionResult< PtrTy, Compress >::isInvalid(), isOpenMPCapturedDecl(), clang::Expr::isTypeDependent(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::SourceLocation::isValid(), clang::Expr::isValueDependent(), PerformOpenMPImplicitIntegerConversion(), clang::Private, reportOriginalDsa(), clang::Result, and clang::SemaBase::SemaRef.

Referenced by ActOnOpenMPVarListClause(), and clang::TreeTransform< Derived >::RebuildOMPLinearClause().

◆ ActOnOpenMPLoopInitialization()

void SemaOpenMP::ActOnOpenMPLoopInitialization ( SourceLocation  ForLoc,
Stmt Init 
)

◆ ActOnOpenMPLoopnest()

StmtResult SemaOpenMP::ActOnOpenMPLoopnest ( Stmt AStmt)

Process a canonical OpenMP loop nest that can either be a canonical literal loop (ForStmt or CXXForRangeStmt), or the generated loop of an OpenMP loop transformation construct.

Definition at line 5741 of file SemaOpenMP.cpp.

References ActOnOpenMPCanonicalLoop(), clang::OMPExecutableDirective::getDirectiveKind(), and clang::isOpenMPLoopTransformationDirective().

◆ ActOnOpenMPMapClause()

OMPClause * SemaOpenMP::ActOnOpenMPMapClause ( Expr IteratorModifier,
ArrayRef< OpenMPMapModifierKind MapTypeModifiers,
ArrayRef< SourceLocation MapTypeModifiersLoc,
CXXScopeSpec MapperIdScopeSpec,
DeclarationNameInfo MapperId,
OpenMPMapClauseKind  MapType,
bool  IsMapTypeImplicit,
SourceLocation  MapLoc,
SourceLocation  ColonLoc,
ArrayRef< Expr * >  VarList,
const OMPVarListLocTy Locs,
bool  NoDiagnose = false,
ArrayRef< Expr * >  UnresolvedMappers = std::nullopt 
)

◆ ActOnOpenMPMaskedDirective()

StmtResult SemaOpenMP::ActOnOpenMPMaskedDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPMaskedTaskLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPMaskedTaskLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPMaskedTaskLoopSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPMasterDirective()

StmtResult SemaOpenMP::ActOnOpenMPMasterDirective ( Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp master' after parsing of the associated statement.

Definition at line 10801 of file SemaOpenMP.cpp.

References clang::OMPMasterDirective::Create(), clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, clang::Sema::setFunctionHasBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPMasterTaskLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPMasterTaskLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPMasterTaskLoopSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPMergeableClause()

OMPClause * SemaOpenMP::ActOnOpenMPMergeableClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'mergeable' clause.

Definition at line 16577 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPMessageClause()

OMPClause * SemaOpenMP::ActOnOpenMPMessageClause ( Expr MS,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'message' clause.

passing string for message.

Definition at line 15990 of file SemaOpenMP.cpp.

References clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), and clang::Stmt::getBeginLoc().

Referenced by ActOnOpenMPSingleExprClause(), and clang::TreeTransform< Derived >::RebuildOMPMessageClause().

◆ ActOnOpenMPMetaDirective()

StmtResult clang::SemaOpenMP::ActOnOpenMPMetaDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp metadirective' after parsing of the associated statement.

◆ ActOnOpenMPNocontextClause()

OMPClause * SemaOpenMP::ActOnOpenMPNocontextClause ( Expr Condition,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPNogroupClause()

OMPClause * SemaOpenMP::ActOnOpenMPNogroupClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'nogroup' clause.

Definition at line 16666 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPNontemporalClause()

OMPClause * SemaOpenMP::ActOnOpenMPNontemporalClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPNovariantsClause()

OMPClause * SemaOpenMP::ActOnOpenMPNovariantsClause ( Expr Condition,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPNowaitClause()

OMPClause * SemaOpenMP::ActOnOpenMPNowaitClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'nowait' clause.

Definition at line 16565 of file SemaOpenMP.cpp.

References DSAStack, and clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPNullaryAssumptionClause()

OMPClause * SemaOpenMP::ActOnOpenMPNullaryAssumptionClause ( OpenMPClauseKind  CK,
SourceLocation  Loc,
SourceLocation  RLoc 
)

Definition at line 23586 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext(), and Loc.

◆ ActOnOpenMPNumTasksClause()

OMPClause * SemaOpenMP::ActOnOpenMPNumTasksClause ( OpenMPNumTasksClauseModifier  Modifier,
Expr NumTasks,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  ModifierLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPNumTeamsClause()

OMPClause * SemaOpenMP::ActOnOpenMPNumTeamsClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPNumThreadsClause()

OMPClause * SemaOpenMP::ActOnOpenMPNumThreadsClause ( Expr NumThreads,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPOrderClause()

OMPClause * SemaOpenMP::ActOnOpenMPOrderClause ( OpenMPOrderClauseModifier  Modifier,
OpenMPOrderClauseKind  Kind,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  MLoc,
SourceLocation  KindLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPOrderedClause()

OMPClause * SemaOpenMP::ActOnOpenMPOrderedClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc,
SourceLocation  LParenLoc = SourceLocation(),
Expr NumForLoops = nullptr 
)

◆ ActOnOpenMPOrderedDirective()

StmtResult SemaOpenMP::ActOnOpenMPOrderedDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPParallelDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp parallel' after parsing of the associated statement.

Definition at line 7629 of file SemaOpenMP.cpp.

References clang::OMPParallelDirective::Create(), DSAStack, clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, setBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPParallelForDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelForDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPParallelForSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelForSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPParallelGenericLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelGenericLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPParallelMaskedDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelMaskedDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp parallel masked' after parsing of the associated statement.

Definition at line 10950 of file SemaOpenMP.cpp.

References clang::OMPParallelMaskedDirective::Create(), DSAStack, clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, setBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPParallelMaskedTaskLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPParallelMaskedTaskLoopSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPParallelMasterDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelMasterDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp parallel master' after parsing of the associated statement.

Definition at line 10937 of file SemaOpenMP.cpp.

References clang::OMPParallelMasterDirective::Create(), DSAStack, clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, setBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPParallelMasterTaskLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPParallelMasterTaskLoopSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPParallelSectionsDirective()

StmtResult SemaOpenMP::ActOnOpenMPParallelSectionsDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp parallel sections' after parsing of the associated statement.

Definition at line 10963 of file SemaOpenMP.cpp.

References checkSectionsDirective(), clang::OMPParallelSectionsDirective::Create(), DSAStack, clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, clang::Sema::setFunctionHasBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPPartialClause()

OMPClause * SemaOpenMP::ActOnOpenMPPartialClause ( Expr FactorExpr,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPPriorityClause()

OMPClause * SemaOpenMP::ActOnOpenMPPriorityClause ( Expr Priority,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPPrivateClause()

OMPClause * SemaOpenMP::ActOnOpenMPPrivateClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPProcBindClause()

OMPClause * SemaOpenMP::ActOnOpenMPProcBindClause ( llvm::omp::ProcBindKind  Kind,
SourceLocation  KindLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPReadClause()

OMPClause * SemaOpenMP::ActOnOpenMPReadClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'read' clause.

Definition at line 16582 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPReductionClause()

OMPClause * SemaOpenMP::ActOnOpenMPReductionClause ( ArrayRef< Expr * >  VarList,
OpenMPReductionClauseModifier  Modifier,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  ModifierLoc,
SourceLocation  ColonLoc,
SourceLocation  EndLoc,
CXXScopeSpec ReductionIdScopeSpec,
const DeclarationNameInfo ReductionId,
ArrayRef< Expr * >  UnresolvedReductions = std::nullopt 
)

◆ ActOnOpenMPRegionEnd()

StmtResult SemaOpenMP::ActOnOpenMPRegionEnd ( StmtResult  S,
ArrayRef< OMPClause * >  Clauses 
)

◆ ActOnOpenMPRegionStart()

void SemaOpenMP::ActOnOpenMPRegionStart ( OpenMPDirectiveKind  DKind,
Scope CurScope 
)

Initialization of captured region for OpenMP region.

Definition at line 4381 of file SemaOpenMP.cpp.

References clang::Sema::CurContext, DSAStack, handleDeclareVariantConstructTrait(), processCapturedRegions(), and clang::SemaBase::SemaRef.

◆ ActOnOpenMPRelaxedClause()

OMPClause * SemaOpenMP::ActOnOpenMPRelaxedClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'relaxed' clause.

Definition at line 16646 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPReleaseClause()

OMPClause * SemaOpenMP::ActOnOpenMPReleaseClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'release' clause.

Definition at line 16641 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPRequiresDirective()

SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPRequiresDirective ( SourceLocation  Loc,
ArrayRef< OMPClause * >  ClauseList 
)

◆ ActOnOpenMPReverseDirective()

StmtResult SemaOpenMP::ActOnOpenMPReverseDirective ( Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPReverseOffloadClause()

OMPClause * SemaOpenMP::ActOnOpenMPReverseOffloadClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'reverse_offload' clause.

Definition at line 16682 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPSafelenClause()

OMPClause * SemaOpenMP::ActOnOpenMPSafelenClause ( Expr Length,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPScanDirective()

StmtResult SemaOpenMP::ActOnOpenMPScanDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPScheduleClause()

OMPClause * SemaOpenMP::ActOnOpenMPScheduleClause ( OpenMPScheduleClauseModifier  M1,
OpenMPScheduleClauseModifier  M2,
OpenMPScheduleClauseKind  Kind,
Expr ChunkSize,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  M1Loc,
SourceLocation  M2Loc,
SourceLocation  KindLoc,
SourceLocation  CommaLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPScopeDirective()

StmtResult SemaOpenMP::ActOnOpenMPScopeDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp scope' after parsing of the associated statement.

Definition at line 23187 of file SemaOpenMP.cpp.

References clang::OMPScopeDirective::Create(), clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, clang::Sema::setFunctionHasBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPSectionDirective()

StmtResult SemaOpenMP::ActOnOpenMPSectionDirective ( Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp section' after parsing of the associated statement.

Definition at line 10515 of file SemaOpenMP.cpp.

References clang::OMPSectionDirective::Create(), DSAStack, clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, clang::Sema::setFunctionHasBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPSectionsDirective()

StmtResult SemaOpenMP::ActOnOpenMPSectionsDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp sections' after parsing of the associated statement.

Definition at line 10502 of file SemaOpenMP.cpp.

References checkSectionsDirective(), clang::OMPSectionsDirective::Create(), DSAStack, clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, clang::Sema::setFunctionHasBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPSeqCstClause()

OMPClause * SemaOpenMP::ActOnOpenMPSeqCstClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'seq_cst' clause.

Definition at line 16626 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPSeverityClause()

OMPClause * SemaOpenMP::ActOnOpenMPSeverityClause ( OpenMPSeverityClauseKind  Kind,
SourceLocation  KindLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPSharedClause()

OMPClause * SemaOpenMP::ActOnOpenMPSharedClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPSIMDClause()

OMPClause * SemaOpenMP::ActOnOpenMPSIMDClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'simd' clause.

Definition at line 16661 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPSimdlenClause()

OMPClause * SemaOpenMP::ActOnOpenMPSimdlenClause ( Expr Length,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPSimpleClause()

OMPClause * SemaOpenMP::ActOnOpenMPSimpleClause ( OpenMPClauseKind  Kind,
unsigned  Argument,
SourceLocation  ArgumentLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPSingleDirective()

StmtResult SemaOpenMP::ActOnOpenMPSingleDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPSingleExprClause()

OMPClause * SemaOpenMP::ActOnOpenMPSingleExprClause ( OpenMPClauseKind  Kind,
Expr Expr,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPSingleExprWithArgClause()

OMPClause * SemaOpenMP::ActOnOpenMPSingleExprWithArgClause ( OpenMPClauseKind  Kind,
ArrayRef< unsigned Arguments,
Expr Expr,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
ArrayRef< SourceLocation ArgumentsLoc,
SourceLocation  DelimLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPSizesClause()

OMPClause * SemaOpenMP::ActOnOpenMPSizesClause ( ArrayRef< Expr * >  SizeExprs,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPTargetDataDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetDataDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPTargetDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPTargetEnterDataDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetEnterDataDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
Stmt AStmt 
)

Called on well-formed '#pragma omp target enter data' after parsing of the associated statement.

Definition at line 13089 of file SemaOpenMP.cpp.

References clang::OMPTargetEnterDataDirective::Create(), clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), hasClauses(), clang::SemaBase::SemaRef, setBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPTargetExitDataDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetExitDataDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
Stmt AStmt 
)

Called on well-formed '#pragma omp target exit data' after parsing of the associated statement.

Definition at line 13109 of file SemaOpenMP.cpp.

References clang::OMPTargetExitDataDirective::Create(), clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), hasClauses(), clang::SemaBase::SemaRef, setBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPTargetParallelDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetParallelDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp target parallel' after parsing of the associated statement.

Definition at line 12985 of file SemaOpenMP.cpp.

References clang::OMPTargetParallelDirective::Create(), DSAStack, clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, setBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPTargetParallelForDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetParallelForDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTargetParallelForSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTargetParallelGenericLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTargetSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTargetTeamsDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetTeamsDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPTargetTeamsDistributeDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetTeamsDistributeDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTargetTeamsDistributeParallelForDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

Called on well-formed '#pragma omp target teams distribute parallel for' after parsing of the associated statement.

Definition at line 14003 of file SemaOpenMP.cpp.

References checkOpenMPLoop(), clang::OMPTargetTeamsDistributeParallelForDirective::Create(), DSAStack, finishLinearClauses(), clang::SemaBase::getASTContext(), getCollapseNumberExpr(), clang::SemaBase::SemaRef, setBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTargetTeamsDistributeSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTargetTeamsGenericLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTargetUpdateDirective()

StmtResult SemaOpenMP::ActOnOpenMPTargetUpdateDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
Stmt AStmt 
)

◆ ActOnOpenMPTaskDirective()

StmtResult SemaOpenMP::ActOnOpenMPTaskDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp task' after parsing of the associated statement.

Definition at line 10999 of file SemaOpenMP.cpp.

References checkMutuallyExclusiveClauses(), clang::OMPTaskDirective::Create(), DSAStack, clang::SemaBase::getASTContext(), clang::SemaBase::SemaRef, setBranchProtectedScope(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPTaskgroupDirective()

StmtResult SemaOpenMP::ActOnOpenMPTaskgroupDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPTaskLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPTaskLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTaskLoopSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTaskReductionClause()

OMPClause * SemaOpenMP::ActOnOpenMPTaskReductionClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  ColonLoc,
SourceLocation  EndLoc,
CXXScopeSpec ReductionIdScopeSpec,
const DeclarationNameInfo ReductionId,
ArrayRef< Expr * >  UnresolvedReductions = std::nullopt 
)

◆ ActOnOpenMPTaskwaitDirective()

StmtResult SemaOpenMP::ActOnOpenMPTaskwaitDirective ( ArrayRef< OMPClause * >  Clauses,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp taskwait'.

Definition at line 11061 of file SemaOpenMP.cpp.

References clang::OMPTaskwaitDirective::Create(), clang::SemaBase::Diag(), clang::SemaBase::getASTContext(), and clang::StmtError().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPTaskyieldDirective()

StmtResult SemaOpenMP::ActOnOpenMPTaskyieldDirective ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp taskyield'.

Definition at line 11019 of file SemaOpenMP.cpp.

References clang::OMPTaskyieldDirective::Create(), and clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPTeamsDirective()

StmtResult SemaOpenMP::ActOnOpenMPTeamsDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPTeamsDistributeDirective()

StmtResult SemaOpenMP::ActOnOpenMPTeamsDistributeDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTeamsDistributeParallelForDirective()

StmtResult SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTeamsDistributeParallelForSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTeamsDistributeSimdDirective()

StmtResult SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPTeamsGenericLoopDirective()

StmtResult SemaOpenMP::ActOnOpenMPTeamsGenericLoopDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc,
VarsWithInheritedDSAType VarsWithImplicitDSA 
)

◆ ActOnOpenMPThreadLimitClause()

OMPClause * SemaOpenMP::ActOnOpenMPThreadLimitClause ( ArrayRef< Expr * >  VarList,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPThreadprivateDirective()

SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPThreadprivateDirective ( SourceLocation  Loc,
ArrayRef< Expr * >  VarList 
)

Called on well-formed '#pragma omp threadprivate'.

Definition at line 3188 of file SemaOpenMP.cpp.

References clang::DeclContext::addDecl(), CheckOMPThreadPrivateDecl(), clang::Sema::CurContext, D, Loc, clang::OpaquePtr< PtrTy >::make(), and clang::SemaBase::SemaRef.

◆ ActOnOpenMPThreadsClause()

OMPClause * SemaOpenMP::ActOnOpenMPThreadsClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'threads' clause.

Definition at line 16656 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPTileDirective()

StmtResult SemaOpenMP::ActOnOpenMPTileDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp tile' after parsing of its clauses and the associated statement.

Definition at line 14212 of file SemaOpenMP.cpp.

References clang::Sema::ActOnConditionalOp(), clang::Sema::ActOnIntegerConstant(), clang::Sema::AddInitializerToDecl(), addLoopPreInits(), clang::AssertSuccess(), clang::Sema::BuildBinOp(), buildDeclRefExpr(), buildPreInits(), clang::Sema::BuildUnaryOp(), buildVarDecl(), collectLoopStmts(), clang::OMPLoopBasedDirective::HelperExprs::Cond, clang::OMPLoopBasedDirective::HelperExprs::Counters, clang::DeclGroupRef::Create(), clang::CompoundStmt::Create(), clang::IntegerLiteral::Create(), clang::OMPTileDirective::Create(), clang::Sema::CurContext, clang::Sema::DefaultLvalueConversion(), E, clang::ActionResult< PtrTy, Compress >::get(), clang::IdentifierTable::get(), clang::SemaBase::getASTContext(), clang::DeclRefExpr::getBeginLoc(), clang::Stmt::getBeginLoc(), clang::Sema::getCurScope(), clang::DeclRefExpr::getDecl(), clang::DeclRefExpr::getEndLoc(), clang::Stmt::getEndLoc(), clang::Expr::getExprLoc(), clang::Preprocessor::getIdentifierTable(), clang::Expr::getType(), clang::ASTContext::getTypeSize(), clang::OMPLoopBasedDirective::HelperExprs::Inc, clang::OMPLoopBasedDirective::HelperExprs::Init, clang::DeclContext::isDependentContext(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::OMPLoopBasedDirective::HelperExprs::IterationVarRef, clang::OMPLoopBasedDirective::HelperExprs::NumIterations, clang::OK_Ordinary, clang::Sema::PP, clang::SemaBase::SemaRef, clang::StmtError(), clang::OMPLoopBasedDirective::HelperExprs::Updates, and clang::VK_PRValue.

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPToClause()

OMPClause * SemaOpenMP::ActOnOpenMPToClause ( ArrayRef< OpenMPMotionModifierKind MotionModifiers,
ArrayRef< SourceLocation MotionModifiersLoc,
CXXScopeSpec MapperIdScopeSpec,
DeclarationNameInfo MapperId,
SourceLocation  ColonLoc,
ArrayRef< Expr * >  VarList,
const OMPVarListLocTy Locs,
ArrayRef< Expr * >  UnresolvedMappers = std::nullopt 
)

◆ ActOnOpenMPUnifiedAddressClause()

OMPClause * SemaOpenMP::ActOnOpenMPUnifiedAddressClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'unified_address' clause.

Definition at line 16671 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPUnifiedSharedMemoryClause()

OMPClause * SemaOpenMP::ActOnOpenMPUnifiedSharedMemoryClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'unified_address' clause.

Definition at line 16677 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPUnrollDirective()

StmtResult SemaOpenMP::ActOnOpenMPUnrollDirective ( ArrayRef< OMPClause * >  Clauses,
Stmt AStmt,
SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed '#pragma omp unroll' after parsing of its clauses and the associated statement.

Definition at line 14484 of file SemaOpenMP.cpp.

References clang::Sema::ActOnIntegerConstant(), clang::Sema::AddInitializerToDecl(), addLoopPreInits(), clang::AssertSuccess(), clang::Sema::BuildBinOp(), buildDeclRefExpr(), buildPreInits(), clang::Sema::BuildUnaryOp(), buildVarDecl(), checkMutuallyExclusiveClauses(), collectLoopStmts(), clang::OMPLoopBasedDirective::HelperExprs::Cond, clang::OMPLoopBasedDirective::HelperExprs::Counters, clang::CompoundStmt::Create(), clang::IntegerLiteral::Create(), clang::AttributedStmt::Create(), clang::OMPUnrollDirective::Create(), clang::Sema::CurContext, clang::Sema::DefaultLvalueConversion(), clang::SemaBase::Diag(), clang::ActionResult< PtrTy, Compress >::get(), clang::IdentifierTable::get(), clang::SemaBase::getASTContext(), clang::OMPClause::getBeginLoc(), clang::Stmt::getBeginLoc(), clang::Sema::getCurScope(), clang::Stmt::getEndLoc(), clang::Expr::getExprLoc(), clang::OMPPartialClause::getFactor(), clang::Preprocessor::getIdentifierTable(), clang::OMPLoopBasedDirective::HelperExprs::Inc, clang::OMPLoopBasedDirective::HelperExprs::Init, clang::DeclContext::isDependentContext(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::OMPLoopBasedDirective::HelperExprs::IterationVarRef, clang::OMPLoopBasedDirective::HelperExprs::NumIterations, clang::Sema::PP, clang::SemaBase::SemaRef, clang::StmtError(), clang::OMPLoopBasedDirective::HelperExprs::Updates, and VerifyPositiveIntegerConstantInClause().

Referenced by ActOnOpenMPExecutableDirective().

◆ ActOnOpenMPUntiedClause()

OMPClause * SemaOpenMP::ActOnOpenMPUntiedClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'untied' clause.

Definition at line 16571 of file SemaOpenMP.cpp.

References DSAStack, and clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPUpdateClause() [1/2]

OMPClause * SemaOpenMP::ActOnOpenMPUpdateClause ( OpenMPDependClauseKind  Kind,
SourceLocation  KindLoc,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnOpenMPUpdateClause() [2/2]

OMPClause * SemaOpenMP::ActOnOpenMPUpdateClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'update' clause.

Definition at line 16592 of file SemaOpenMP.cpp.

References clang::OMPUpdateClause::Create(), and clang::SemaBase::getASTContext().

◆ ActOnOpenMPUseClause()

OMPClause * SemaOpenMP::ActOnOpenMPUseClause ( Expr InteropVar,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  VarLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'use' clause.

Definition at line 16850 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext(), isValidInteropVariable(), and clang::SemaBase::SemaRef.

Referenced by clang::TreeTransform< Derived >::RebuildOMPUseClause().

◆ ActOnOpenMPUseDeviceAddrClause()

OMPClause * SemaOpenMP::ActOnOpenMPUseDeviceAddrClause ( ArrayRef< Expr * >  VarList,
const OMPVarListLocTy Locs 
)

◆ ActOnOpenMPUseDevicePtrClause()

OMPClause * SemaOpenMP::ActOnOpenMPUseDevicePtrClause ( ArrayRef< Expr * >  VarList,
const OMPVarListLocTy Locs 
)

◆ ActOnOpenMPUsesAllocatorClause()

OMPClause * SemaOpenMP::ActOnOpenMPUsesAllocatorClause ( SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc,
ArrayRef< UsesAllocatorsData Data 
)

◆ ActOnOpenMPVarListClause()

OMPClause * SemaOpenMP::ActOnOpenMPVarListClause ( OpenMPClauseKind  Kind,
ArrayRef< Expr * >  Vars,
const OMPVarListLocTy Locs,
OpenMPVarListDataTy Data 
)

◆ ActOnOpenMPWeakClause()

OMPClause * SemaOpenMP::ActOnOpenMPWeakClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'weak' clause.

Definition at line 16651 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPWhenClause()

OMPClause * clang::SemaOpenMP::ActOnOpenMPWhenClause ( OMPTraitInfo TI,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'when' clause.

◆ ActOnOpenMPWriteClause()

OMPClause * SemaOpenMP::ActOnOpenMPWriteClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on well-formed 'write' clause.

Definition at line 16587 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause().

◆ ActOnOpenMPXAttributeClause()

OMPClause * SemaOpenMP::ActOnOpenMPXAttributeClause ( ArrayRef< const Attr * >  Attrs,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

Called on a well-formed 'ompx_attribute' clause.

Definition at line 23554 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by clang::TreeTransform< Derived >::RebuildOMPXAttributeClause().

◆ ActOnOpenMPXBareClause()

OMPClause * SemaOpenMP::ActOnOpenMPXBareClause ( SourceLocation  StartLoc,
SourceLocation  EndLoc 
)

Called on a well-formed 'ompx_bare' clause.

Definition at line 23562 of file SemaOpenMP.cpp.

References clang::SemaBase::getASTContext().

Referenced by ActOnOpenMPClause(), and clang::TreeTransform< Derived >::RebuildOMPXBareClause().

◆ ActOnOpenMPXDynCGroupMemClause()

OMPClause * SemaOpenMP::ActOnOpenMPXDynCGroupMemClause ( Expr Size,
SourceLocation  StartLoc,
SourceLocation  LParenLoc,
SourceLocation  EndLoc 
)

◆ ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope()

void SemaOpenMP::ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope ( Scope S,
Declarator D,
MultiTemplateParamsArg  TemplateParameterLists,
SmallVectorImpl< FunctionDecl * > &  Bases 
)

◆ ActOnStartOpenMPDeclareTargetContext()

bool SemaOpenMP::ActOnStartOpenMPDeclareTargetContext ( DeclareTargetContextInfo DTCI)

◆ checkDeclIsAllowedInOpenMPTarget()

void SemaOpenMP::checkDeclIsAllowedInOpenMPTarget ( Expr E,
Decl D,
SourceLocation  IdLoc = SourceLocation() 
)

◆ CheckOMPRequiresDecl()

OMPRequiresDecl * SemaOpenMP::CheckOMPRequiresDecl ( SourceLocation  Loc,
ArrayRef< OMPClause * >  Clauses 
)

Check restrictions on Requires directive.

For target specific clauses, the requires directive cannot be specified after the handling of any of the target regions in the current compilation unit.

Definition at line 3571 of file SemaOpenMP.cpp.

References clang::OMPRequiresDecl::Create(), clang::SemaBase::Diag(), DSAStack, clang::SemaBase::getASTContext(), clang::Sema::getCurLexicalContext(), clang::SourceLocation::isInvalid(), Loc, and clang::SemaBase::SemaRef.

Referenced by ActOnOpenMPRequiresDirective().

◆ CheckOMPThreadPrivateDecl()

OMPThreadPrivateDecl * SemaOpenMP::CheckOMPThreadPrivateDecl ( SourceLocation  Loc,
ArrayRef< Expr * >  VarList 
)

◆ checkOpenMPDeclareVariantFunction()

std::optional< std::pair< FunctionDecl *, Expr * > > SemaOpenMP::checkOpenMPDeclareVariantFunction ( SemaOpenMP::DeclGroupPtrTy  DG,
Expr VariantRef,
OMPTraitInfo TI,
unsigned  NumAppendArgs,
SourceRange  SR 
)

Checks '#pragma omp declare variant' variant function and original functions after parsing of the associated method/function.

Parameters
DGFunction declaration to which declare variant directive is applied to.
VariantRefExpression that references the variant function, which must be used instead of the original one, specified in DG.
TIThe trait info object representing the match clause.
NumAppendArgsThe number of omp_interop_t arguments to account for in checking.
Returns
std::nullopt, if the function/variant function are not compatible with the pragma, pair of original function/variant ref expression otherwise.

Definition at line 7229 of file SemaOpenMP.cpp.

References clang::Sema::AA_Converting, clang::OMPTraitInfo::anyScoreOrCondition(), clang::Sema::areMultiversionVariantFunctionsCompatible(), bool, clang::Sema::CheckPlaceholderExpr(), clang::Expr::containsUnexpandedParameterPack(), clang::CPlusPlus, clang::Sema::CreateBuiltinUnaryOp(), clang::ASTContext::DeclMustBeEmitted(), clang::Definition, clang::SemaBase::Diag(), E, clang::OpaquePtr< PtrTy >::get(), clang::ActionResult< PtrTy, Compress >::get(), clang::IdentifierTable::get(), clang::Type::getAsAdjusted(), clang::SemaBase::getASTContext(), clang::SourceRange::getBegin(), clang::Stmt::getBeginLoc(), clang::FieldDecl::getCanonicalDecl(), clang::Sema::getCurScope(), clang::Expr::getExprLoc(), clang::ASTContext::getFunctionType(), clang::SemaBase::getLangOpts(), clang::Decl::getLocation(), clang::ASTContext::getMemberPointerType(), clang::ASTContext::getPointerType(), getRange(), clang::Stmt::getSourceRange(), clang::ValueDecl::getType(), clang::Expr::getType(), clang::ASTContext::getTypeDeclType(), clang::QualType::getTypePtr(), clang::QualType::getUnqualifiedType(), clang::Decl::hasAttr(), clang::ASTContext::Idents, clang::Expr::IgnoreImplicit(), clang::Expr::IgnoreParenImpCasts(), clang::ImplicitConversionSequence::isFailure(), clang::Type::isFunctionNoProtoType(), clang::Type::isFunctionProtoType(), clang::Type::isFunctionType(), clang::Expr::isInstantiationDependent(), clang::Expr::isIntegerConstantExpr(), clang::QualType::isNull(), clang::Expr::isTypeDependent(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::Decl::isUsed(), clang::Expr::isValueDependent(), clang::Sema::LookupName(), clang::Sema::LookupOrdinaryName, clang::ASTContext::mergeFunctionTypes(), clang::SemaBase::PDiag(), clang::Sema::PerformImplicitConversion(), clang::Result, clang::SemaBase::SemaRef, setPrototype(), and clang::Sema::TryImplicitConversion().

Referenced by instantiateOMPDeclareVariantAttr().

◆ CheckOpenMPLinearDecl()

bool SemaOpenMP::CheckOpenMPLinearDecl ( const ValueDecl D,
SourceLocation  ELoc,
OpenMPLinearClauseKind  LinKind,
QualType  Type,
bool  IsDeclareSimd = false 
)

◆ CheckOpenMPLinearModifier()

bool SemaOpenMP::CheckOpenMPLinearModifier ( OpenMPLinearClauseKind  LinKind,
SourceLocation  LinLoc 
)

Checks correctness of linear modifiers.

Definition at line 19117 of file SemaOpenMP.cpp.

References clang::CPlusPlus, clang::SemaBase::Diag(), clang::SemaBase::getLangOpts(), and clang::OMPC_LINEAR_unknown.

Referenced by ActOnOpenMPLinearClause().

◆ diagIfOpenMPDeviceCode()

SemaBase::SemaDiagnosticBuilder SemaOpenMP::diagIfOpenMPDeviceCode ( SourceLocation  Loc,
unsigned  DiagID,
const FunctionDecl FD 
)

Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as device code".

  • If CurContext is a declare target function or it is known that the function is emitted for the device, emits the diagnostics immediately.
  • If CurContext is a non-declare target function and we are compiling for the device, creates a diagnostic which is emitted if and when we realize that the function will be codegen'ed.

Example usage:

// Variable-length arrays are not allowed in NVPTX device code. if (diagIfOpenMPDeviceCode(Loc, diag::err_vla_unsupported)) return ExprError(); // Otherwise, continue parsing as normal.

Definition at line 2026 of file SemaOpenMP.cpp.

References clang::Sema::CUDADiscarded, clang::Sema::Emitted, clang::Sema::getEmissionStatus(), clang::SemaBase::getLangOpts(), isOpenMPDeviceDelayedContext(), Loc, clang::Sema::OMPDiscarded, clang::SemaBase::SemaRef, clang::Sema::TemplateDiscarded, and clang::Sema::Unknown.

◆ diagIfOpenMPHostCode()

SemaBase::SemaDiagnosticBuilder SemaOpenMP::diagIfOpenMPHostCode ( SourceLocation  Loc,
unsigned  DiagID,
const FunctionDecl FD 
)

Creates a SemaDiagnosticBuilder that emits the diagnostic if the current context is "used as host code".

  • If CurContext is a declare target function or it is known that the function is emitted for the host, emits the diagnostics immediately.
  • If CurContext is a non-host function, just ignore it.

Example usage:

// Variable-length arrays are not allowed in NVPTX device code. if (diagIfOpenMPHostode(Loc, diag::err_vla_unsupported)) return ExprError(); // Otherwise, continue parsing as normal.

Definition at line 2064 of file SemaOpenMP.cpp.

References clang::Sema::CUDADiscarded, clang::Sema::Emitted, clang::Sema::getEmissionStatus(), clang::SemaBase::getLangOpts(), Loc, clang::Sema::OMPDiscarded, clang::SemaBase::SemaRef, clang::Sema::TemplateDiscarded, and clang::Sema::Unknown.

◆ DiagnoseUnterminatedOpenMPDeclareTarget()

void SemaOpenMP::DiagnoseUnterminatedOpenMPDeclareTarget ( )

Report unterminated 'omp declare target' or 'omp begin declare target' at the end of a compilation unit.

Definition at line 22428 of file SemaOpenMP.cpp.

References clang::SemaBase::Diag(), clang::SemaOpenMP::DeclareTargetContextInfo::Kind, and clang::SemaOpenMP::DeclareTargetContextInfo::Loc.

Referenced by clang::Sema::ActOnEndOfTranslationUnit().

◆ EndOpenMPClause()

void SemaOpenMP::EndOpenMPClause ( )

End analysis of clauses.

Definition at line 2771 of file SemaOpenMP.cpp.

References clang::Sema::CleanupVarDeclMarking(), DSAStack, and clang::SemaBase::SemaRef.

◆ EndOpenMPDSABlock()

void SemaOpenMP::EndOpenMPDSABlock ( Stmt CurDirective)

◆ finalizeOpenMPDelayedAnalysis()

void SemaOpenMP::finalizeOpenMPDelayedAnalysis ( const FunctionDecl Caller,
const FunctionDecl Callee,
SourceLocation  Loc 
)

Finishes analysis of the deferred functions calls that may be declared as host/nohost during device/host compilation.

Definition at line 2701 of file SemaOpenMP.cpp.

References clang::SemaBase::Diag(), clang::SemaBase::getLangOpts(), clang::Redeclarable< decl_type >::getMostRecentDecl(), clang::getOpenMPSimpleClauseTypeName(), and Loc.

◆ getOpenMPCapturedExpr()

ExprResult SemaOpenMP::getOpenMPCapturedExpr ( VarDecl Capture,
ExprValueKind  VK,
ExprObjectKind  OK,
SourceLocation  Loc 
)

◆ getOpenMPCaptureLevels()

int SemaOpenMP::getOpenMPCaptureLevels ( OpenMPDirectiveKind  Kind)
static

Return the number of captured regions created for an OpenMP directive.

Definition at line 4409 of file SemaOpenMP.cpp.

References clang::getOpenMPCaptureRegions().

Referenced by ActOnOpenMPExecutableDirective(), isOpenMPGlobalCapturedDecl(), and setBranchProtectedScope().

◆ getOpenMPDeclareMapperVarName()

const ValueDecl * SemaOpenMP::getOpenMPDeclareMapperVarName ( ) const

Definition at line 22007 of file SemaOpenMP.cpp.

References DSAStack, and clang::SemaBase::getLangOpts().

Referenced by clang::Sema::DiagnoseUseOfDecl().

◆ handleOMPAssumeAttr()

void SemaOpenMP::handleOMPAssumeAttr ( Decl D,
const ParsedAttr AL 
)

◆ hasGlobalOpenMPAssumes()

bool clang::SemaOpenMP::hasGlobalOpenMPAssumes ( ) const
inline

Check if there is an active global omp assumes directive.

Definition at line 246 of file SemaOpenMP.h.

◆ isInOpenMPAssumeScope()

bool clang::SemaOpenMP::isInOpenMPAssumeScope ( ) const
inline

Check if there is an active global omp begin assumes directive.

Definition at line 243 of file SemaOpenMP.h.

Referenced by ActOnOpenMPEndAssumesDirective().

◆ isInOpenMPDeclareTargetContext()

bool clang::SemaOpenMP::isInOpenMPDeclareTargetContext ( ) const
inline

Return true inside OpenMP declare target region.

Definition at line 371 of file SemaOpenMP.h.

Referenced by checkDeclIsAllowedInOpenMPTarget(), isOpenMPCapturedDecl(), and MarkExprReferenced().

◆ isInOpenMPDeclareVariantScope()

bool clang::SemaOpenMP::isInOpenMPDeclareVariantScope ( ) const
inline

Can we exit an OpenMP declare variant scope at the moment.

Definition at line 111 of file SemaOpenMP.h.

Referenced by ActOnOpenMPEndDeclareVariant().

◆ isInOpenMPTargetExecutionDirective()

bool SemaOpenMP::isInOpenMPTargetExecutionDirective ( ) const

Return true inside OpenMP target region.

Definition at line 2293 of file SemaOpenMP.cpp.

References DSAStack, and clang::isOpenMPTargetExecutionDirective().

Referenced by isOpenMPCapturedDecl(), isOpenMPDeviceDelayedContext(), and isOpenMPGlobalCapturedDecl().

◆ isInOpenMPTaskUntiedContext()

bool SemaOpenMP::isInOpenMPTaskUntiedContext ( ) const

Return true if currently in OpenMP task with untied clause context.

Definition at line 2288 of file SemaOpenMP.cpp.

References DSAStack, and clang::isOpenMPTaskingDirective().

Referenced by clang::Sema::BuildArrayType().

◆ isOpenMPCapturedByRef()

bool SemaOpenMP::isOpenMPCapturedByRef ( const ValueDecl D,
unsigned  Level,
unsigned  OpenMPCaptureLevel 
) const

◆ isOpenMPCapturedDecl()

VarDecl * SemaOpenMP::isOpenMPCapturedDecl ( ValueDecl D,
bool  CheckScopeInfo = false,
unsigned  StopAt = 0 
)

Check if the specified variable is used in one of the private clauses (private, firstprivate, lastprivate, reduction etc.) in OpenMP constructs.

Definition at line 2327 of file SemaOpenMP.cpp.

References buildCaptureDecl(), clang::Sema::BuildCXXThisExpr(), buildDeclRefExpr(), clang::Sema::BuildMemberExpr(), clang::C, checkDeclIsAllowedInOpenMPTarget(), clang::CR_OpenMP, clang::Sema::CurContext, D, DSAStack, clang::Sema::FunctionScopes, clang::Decl::getAccess(), getCanonicalDecl(), clang::Sema::getCurBlock(), clang::Sema::getCurCapturedRegion(), clang::Sema::getCurLambda(), clang::Sema::getCurrentThisType(), clang::DeclRefExpr::getDecl(), clang::NamedDecl::getIdentifier(), clang::SemaBase::getLangOpts(), clang::QualType::getNonReferenceType(), clang::getOpenMPCaptureRegions(), clang::DeclContext::getParent(), clang::ValueDecl::getType(), clang::VarDecl::hasLocalStorage(), clang::VarDecl::isConstexpr(), isInOpenMPDeclareTargetContext(), isInOpenMPTargetExecutionDirective(), clang::QualType::isNull(), clang::isOpenMPPrivate(), clang::isOpenMPThreadPrivate(), clang::DeclAccessPair::make(), clang::OK_Ordinary, clang::sema::CapturedRegionScopeInfo::OpenMPCaptureLevel, clang::sema::CapturedRegionScopeInfo::OpenMPLevel, clang::SemaBase::SemaRef, and clang::VK_LValue.

Referenced by actOnOMPReductionKindClause(), ActOnOpenMPAlignedClause(), ActOnOpenMPCopyprivateClause(), ActOnOpenMPFirstprivateClause(), ActOnOpenMPLastprivateClause(), ActOnOpenMPLinearClause(), ActOnOpenMPLoopInitialization(), ActOnOpenMPSharedClause(), buildCapture(), captureInBlock(), and captureInCapturedRegion().

◆ isOpenMPDeclareMapperVarDeclAllowed()

bool SemaOpenMP::isOpenMPDeclareMapperVarDeclAllowed ( const VarDecl VD) const

◆ isOpenMPGlobalCapturedDecl()

bool SemaOpenMP::isOpenMPGlobalCapturedDecl ( ValueDecl D,
unsigned  Level,
unsigned  CaptureLevel 
) const

Check if the specified global variable must be captured by outer capture regions.

Parameters
LevelRelative level of nested OpenMP construct for that the check is performed.

Definition at line 2657 of file SemaOpenMP.cpp.

References D, DSAStack, clang::SemaBase::getLangOpts(), getOpenMPCaptureLevels(), clang::VarDecl::hasLocalStorage(), and isInOpenMPTargetExecutionDirective().

Referenced by clang::Sema::tryCaptureVariable().

◆ isOpenMPPrivateDecl()

OpenMPClauseKind SemaOpenMP::isOpenMPPrivateDecl ( ValueDecl D,
unsigned  Level,
unsigned  CapLevel 
) const

◆ isOpenMPRebuildMemberExpr()

bool SemaOpenMP::isOpenMPRebuildMemberExpr ( ValueDecl D)

The member expression(this->fd) needs to be rebuilt in the template instantiation to generate private copy for OpenMP when default clause is used.

The function will return true if default cluse is used.

Definition at line 2304 of file SemaOpenMP.cpp.

References clang::C, D, DSAStack, and clang::isOpenMPPrivate().

◆ isOpenMPTargetCapturedDecl()

bool SemaOpenMP::isOpenMPTargetCapturedDecl ( const ValueDecl D,
unsigned  Level,
unsigned  CaptureLevel 
) const

Check if the specified variable is captured by 'target' directive.

Parameters
LevelRelative level of nested OpenMP construct for that the check is performed.

Definition at line 2643 of file SemaOpenMP.cpp.

References D, DSAStack, clang::SemaBase::getLangOpts(), clang::getOpenMPCaptureRegions(), clang::VarDecl::hasLocalStorage(), and clang::isOpenMPTargetExecutionDirective().

Referenced by