|
clang 24.0.0git
|
This file implements semantic analysis for OpenMP directives and clauses. More...
#include "clang/Sema/SemaOpenMP.h"#include "clang/AST/ASTConsumer.h"#include "TreeTransform.h"#include "clang/AST/ASTContext.h"#include "clang/AST/ASTMutationListener.h"#include "clang/AST/Attr.h"#include "clang/AST/CXXInheritance.h"#include "clang/AST/Decl.h"#include "clang/AST/DeclCXX.h"#include "clang/AST/DeclOpenMP.h"#include "clang/AST/DynamicRecursiveASTVisitor.h"#include "clang/AST/OpenMPClause.h"#include "clang/AST/RecursiveASTVisitor.h"#include "clang/AST/Stmt.h"#include "clang/AST/StmtCXX.h"#include "clang/AST/StmtOpenMP.h"#include "clang/AST/StmtVisitor.h"#include "clang/Basic/DiagnosticSema.h"#include "clang/Basic/OpenMPKinds.h"#include "clang/Basic/PartialDiagnostic.h"#include "clang/Basic/TargetInfo.h"#include "clang/Sema/EnterExpressionEvaluationContext.h"#include "clang/Sema/Initialization.h"#include "clang/Sema/Lookup.h"#include "clang/Sema/ParsedAttr.h"#include "clang/Sema/Scope.h"#include "clang/Sema/ScopeInfo.h"#include "clang/Sema/Sema.h"#include "llvm/ADT/IndexedMap.h"#include "llvm/ADT/PointerEmbeddedInt.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/Sequence.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/StringExtras.h"#include "llvm/Frontend/OpenMP/OMPAssume.h"#include "llvm/Frontend/OpenMP/OMPConstants.h"#include "llvm/Frontend/OpenMP/OMPVersion.h"#include "llvm/IR/Assumptions.h"#include <limits>#include <optional>#include "clang/AST/StmtNodes.inc"Go to the source code of this file.
Classes | |
| struct | Kind2Unsigned |
| class | ForVarDeclFinder |
| Look for variables declared in the body parts of a for-loop nest. More... | |
| class | NestedLoopCounterVisitor |
| Counts the total number of OpenMP canonical nested loops, including the outermost loop (the original loop). More... | |
| class | GlobalDeclRefChecker |
| This class visits every VarDecl that the initializer references and adds OMPDeclareTargetDeclAttr to each of them. More... | |
Macros | |
| #define | DSAStack static_cast<DSAStackTy *>(VarDataSharingAttributesStack) |
| #define | STMT(CLASS, PARENT) |
| #define | ABSTRACT_STMT(CLASS) |
| #define | COMMON_OMP_LOOP_TRANSFORMATION(CLASS, PARENT) |
| #define | OMPCANONICALLOOPNESTTRANSFORMATIONDIRECTIVE(CLASS, PARENT) |
| #define | OMPCANONICALLOOPSEQUENCETRANSFORMATIONDIRECTIVE(CLASS, PARENT) |
Functions | |
| static const Expr * | checkMapClauseExpressionBase (Sema &SemaRef, Expr *E, OMPClauseMappableExprCommon::MappableExprComponentList &CurComponents, OpenMPClauseKind CKind, OpenMPDirectiveKind DKind, bool NoDiagnose) |
| Return the expression of the base of the mappable expression or null if it cannot be determined and do all the necessary checks to see if the expression is valid as a standalone mappable expression. | |
| static std::string | getOpenMPClauseNameForDiag (OpenMPClauseKind C) |
| static const Expr * | getExprAsWritten (const Expr *E) |
| static Expr * | getExprAsWritten (Expr *E) |
| static const ValueDecl * | getCanonicalDecl (const ValueDecl *D) |
| static ValueDecl * | getCanonicalDecl (ValueDecl *D) |
| static VarDecl * | buildVarDecl (Sema &SemaRef, SourceLocation Loc, QualType Type, StringRef Name, const AttrVec *Attrs=nullptr, DeclRefExpr *OrigRef=nullptr) |
| Build a variable declaration for OpenMP loop iteration variable. | |
| static DeclRefExpr * | buildDeclRefExpr (Sema &S, VarDecl *D, QualType Ty, SourceLocation Loc, bool RefersToCapture=false) |
| static bool | isConstNotMutableType (Sema &SemaRef, QualType Type, bool AcceptIfMutable=true, bool *IsClassType=nullptr) |
| static bool | rejectConstNotMutableType (Sema &SemaRef, const ValueDecl *D, QualType Type, OpenMPClauseKind CKind, SourceLocation ELoc, bool AcceptIfMutable=true, bool ListItemNotVar=false) |
| static bool | isOpenMPDeviceDelayedContext (Sema &S) |
| static OpenMPDefaultmapClauseKind | getVariableCategoryFromDecl (const LangOptions &LO, const ValueDecl *VD) |
| static OMPCapturedExprDecl * | buildCaptureDecl (Sema &S, IdentifierInfo *Id, Expr *CaptureExpr, bool WithInit, DeclContext *CurContext, bool AsExpression) |
| static std::pair< ValueDecl *, bool > | getPrivateItem (Sema &S, Expr *&RefExpr, SourceLocation &ELoc, SourceRange &ERange, bool AllowArraySection=false, bool AllowAssumedSizeArray=false, StringRef DiagType="") |
| static void | checkReductionClauses (Sema &S, DSAStackTy *Stack, ArrayRef< OMPClause * > Clauses) |
| Check consistency of the reduction clauses. | |
| static void | checkAllocateClauses (Sema &S, DSAStackTy *Stack, ArrayRef< OMPClause * > Clauses) |
| static DeclRefExpr * | buildCapture (Sema &S, ValueDecl *D, Expr *CaptureExpr, bool WithInit) |
| static void | reportOriginalDsa (Sema &SemaRef, const DSAStackTy *Stack, const ValueDecl *D, const DSAStackTy::DSAVarData &DVar, bool IsLoopIterVar=false) |
| static bool | FinishOpenMPLinearClause (OMPLinearClause &Clause, DeclRefExpr *IV, Expr *NumIterations, Sema &SemaRef, Scope *S, DSAStackTy *Stack) |
| static bool | finishLinearClauses (Sema &SemaRef, ArrayRef< OMPClause * > Clauses, OMPLoopBasedDirective::HelperExprs &B, DSAStackTy *Stack) |
| static OMPAllocateDeclAttr::AllocatorTypeTy | getAllocatorKind (Sema &S, DSAStackTy *Stack, Expr *Allocator) |
| static bool | checkPreviousOMPAllocateAttribute (Sema &S, DSAStackTy *Stack, Expr *RefExpr, VarDecl *VD, OMPAllocateDeclAttr::AllocatorTypeTy AllocatorKind, Expr *Allocator) |
| static void | applyOMPAllocateAttribute (Sema &S, VarDecl *VD, OMPAllocateDeclAttr::AllocatorTypeTy AllocatorKind, Expr *Allocator, Expr *Alignment, SourceRange SR) |
| static bool | checkDecompositionCaptureConflict (Sema &SemaRef, OpenMPDirectiveKind DKind, llvm::SmallDenseMap< const DecompositionDecl *, std::pair< bool, SourceLocation >, 4 > &SeenDecompositions, const ValueDecl *D, SourceLocation ELoc, OpenMPClauseKind ClauseKind) |
| Check if bindings from the same structured binding have conflicting capture kinds (by-ref vs by-copy). | |
| static bool | checkClausesForDecompositionConflicts (Sema &SemaRef, OpenMPDirectiveKind DKind, ArrayRef< OMPClause * > Clauses, Stmt *Body=nullptr) |
| Helper to check all clauses in a directive for structured binding capture conflicts. | |
| static bool | checkOriginalVarMappedButOnlyBindingsUsed (Sema &SemaRef, ArrayRef< OMPClause * > Clauses, Stmt *Body) |
| Check if original variable is explicitly mapped but only bindings are used. | |
| static OpenMPMapClauseKind | getMapClauseKindFromModifier (OpenMPDefaultmapClauseModifier M, bool IsAggregateOrDeclareTarget, bool HasConstQualifier) |
| static bool | hasNoMutableFields (const CXXRecordDecl *RD) |
| static bool | hasConstQualifiedMappingType (QualType T) |
| static void | handleDeclareVariantConstructTrait (DSAStackTy *Stack, OpenMPDirectiveKind DKind, bool ScopeEntry) |
| static SmallVector< SemaOpenMP::CapturedParamNameType > | getParallelRegionParams (Sema &SemaRef, bool LoopBoundSharing) |
| static SmallVector< SemaOpenMP::CapturedParamNameType > | getTeamsRegionParams (Sema &SemaRef) |
| static SmallVector< SemaOpenMP::CapturedParamNameType > | getTaskRegionParams (Sema &SemaRef) |
| static SmallVector< SemaOpenMP::CapturedParamNameType > | getTargetRegionParams (Sema &SemaRef) |
| static SmallVector< SemaOpenMP::CapturedParamNameType > | getUnknownRegionParams (Sema &SemaRef) |
| static SmallVector< SemaOpenMP::CapturedParamNameType > | getTaskloopRegionParams (Sema &SemaRef) |
| static void | processCapturedRegions (Sema &SemaRef, OpenMPDirectiveKind DKind, Scope *CurScope, SourceLocation Loc) |
| static ExprResult | buildCapture (Sema &S, Expr *CaptureExpr, DeclRefExpr *&Ref, StringRef Name) |
| static bool | checkOrderedOrderSpecified (Sema &S, const ArrayRef< OMPClause * > Clauses) |
| static bool | checkCancelRegion (Sema &SemaRef, OpenMPDirectiveKind CurrentRegion, OpenMPDirectiveKind CancelRegion, SourceLocation StartLoc) |
| static bool | checkNestingOfRegions (Sema &SemaRef, const DSAStackTy *Stack, OpenMPDirectiveKind CurrentRegion, const DeclarationNameInfo &CurrentName, OpenMPDirectiveKind CancelRegion, OpenMPBindClauseKind BindKind, SourceLocation StartLoc) |
| static bool | checkIfClauses (Sema &S, OpenMPDirectiveKind Kind, ArrayRef< OMPClause * > Clauses, ArrayRef< OpenMPDirectiveKind > AllowedNameModifiers) |
| static QualType | getIntTypeForBitwidthOrBitInt (ASTContext &C, unsigned Bits, bool Signed) |
| Like ASTContext::getIntTypeForBitwidth, but falls back to a _BitInt type when no standard integer type has the requested width. | |
| static VarDecl * | precomputeExpr (Sema &Actions, SmallVectorImpl< Stmt * > &BodyStmts, Expr *E, StringRef Name) |
| static CapturedStmt * | buildDistanceFunc (Sema &Actions, QualType LogicalTy, BinaryOperator::Opcode Rel, Expr *StartExpr, Expr *StopExpr, Expr *StepExpr) |
| Create a closure that computes the number of iterations of a loop. | |
| static CapturedStmt * | buildLoopVarFunc (Sema &Actions, QualType LoopVarTy, QualType LogicalTy, DeclRefExpr *StartExpr, Expr *Step, bool Deref) |
| Create a closure that computes the loop variable from the logical iteration number. | |
| static ExprResult | buildUserDefinedMapperRef (Sema &SemaRef, Scope *S, CXXScopeSpec &MapperIdScopeSpec, const DeclarationNameInfo &MapperId, QualType Type, Expr *UnresolvedMapper, SourceLocation ItemLoc) |
| static void | processImplicitMapsWithDefaultMappers (Sema &S, DSAStackTy *Stack, SmallVectorImpl< OMPClause * > &Clauses) |
| Perform DFS through the structure/class data members trying to find member(s) with user-defined 'default' mapper and generate implicit map clauses for such members with the found 'default' mapper. | |
| static bool | teamsLoopCanBeParallelFor (Stmt *AStmt, Sema &SemaRef) |
| static void | setPrototype (Sema &S, FunctionDecl *FD, FunctionDecl *FDWithProto, QualType NewType) |
| static bool | checkPreferTypeArgs (SemaOpenMP &S, const OMPInteropInfo &Info) |
| Validate prefer_type fr() and attr() arguments in an OMPInteropInfo. | |
| static CapturedStmt * | setBranchProtectedScope (Sema &SemaRef, OpenMPDirectiveKind DKind, Stmt *AStmt) |
| static bool | checkOpenMPIterationSpace (OpenMPDirectiveKind DKind, Stmt *S, Sema &SemaRef, DSAStackTy &DSA, unsigned CurrentNestedLoopCount, unsigned NestedLoopCount, unsigned TotalNestedLoopCount, Expr *CollapseLoopCountExpr, Expr *OrderedLoopCountExpr, SemaOpenMP::VarsWithInheritedDSAType &VarsWithImplicitDSA, llvm::MutableArrayRef< LoopIterationSpace > ResultIterSpaces, llvm::MapVector< const Expr *, DeclRefExpr * > &Captures, const llvm::SmallPtrSetImpl< const Decl * > &CollapsedLoopVarDecls, llvm::SmallPtrSetImpl< const Decl * > &CollapsedLoopInductionVars) |
| Called on a for stmt to check and extract its iteration space for further processing (such as collapsing). | |
| static ExprResult | buildCounterInit (Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef, ExprResult Start, bool IsNonRectangularLB, llvm::MapVector< const Expr *, DeclRefExpr * > &Captures) |
| Build 'VarRef = Start. | |
| static ExprResult | buildCounterUpdate (Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef, ExprResult Start, ExprResult Iter, ExprResult Step, bool Subtract, bool IsNonRectangularLB, llvm::MapVector< const Expr *, DeclRefExpr * > *Captures=nullptr) |
| Build 'VarRef = Start + Iter * Step'. | |
| static ExprResult | widenIterationCount (unsigned Bits, Expr *E, Sema &SemaRef) |
| Convert integer expression E to make it have at least Bits bits. | |
| static bool | fitsInto (unsigned Bits, bool Signed, const Expr *E, Sema &SemaRef) |
| Check if the given expression E is a constant integer that fits into Bits bits. | |
| static Stmt * | buildPreInits (ASTContext &Context, MutableArrayRef< Decl * > PreInits) |
| Build preinits statement for the given declarations. | |
| static void | appendFlattenedStmtList (SmallVectorImpl< Stmt * > &TargetList, Stmt *Item) |
Append the Item or the content of a CompoundStmt to the list TargetList. | |
| static Stmt * | buildPreInits (ASTContext &Context, const llvm::MapVector< const Expr *, DeclRefExpr * > &Captures) |
| Build preinits statement for the given declarations. | |
| static Stmt * | buildPreInits (ASTContext &Context, ArrayRef< Stmt * > PreInits) |
| Build pre-init statement for the given statements. | |
| static Expr * | buildPostUpdate (Sema &S, ArrayRef< Expr * > PostUpdates) |
| Build postupdate expression for the given list of postupdates expressions. | |
| static unsigned | checkOpenMPLoop (OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, Expr *OrderedLoopCountExpr, Stmt *AStmt, Sema &SemaRef, DSAStackTy &DSA, SemaOpenMP::VarsWithInheritedDSAType &VarsWithImplicitDSA, OMPLoopBasedDirective::HelperExprs &Built) |
| Called on a for stmt to check itself and nested loops (if any). | |
| static Expr * | getCollapseNumberExpr (ArrayRef< OMPClause * > Clauses) |
| static Expr * | getOrderedNumberExpr (ArrayRef< OMPClause * > Clauses) |
| static bool | checkSimdlenSafelenSpecified (Sema &S, const ArrayRef< OMPClause * > Clauses) |
| static bool | checkSectionsDirective (Sema &SemaRef, OpenMPDirectiveKind DKind, Stmt *AStmt, DSAStackTy *Stack) |
| static Expr * | getDirectCallExpr (Expr *E) |
| static bool | checkGenericLoopLastprivate (Sema &S, ArrayRef< OMPClause * > Clauses, OpenMPDirectiveKind K, DSAStackTy *Stack) |
| static bool | validateMultidimClauseExprs (SemaBase &SemaRef, OpenMPClauseKind ClauseKind, SourceLocation ClauseBeginLoc, ArrayRef< const Expr * > ClauseVarList, const Expr *DimsModifierExpr, const OMPXBareClause *BareClause=nullptr) |
| Check the number of expressions specified in a multidimensional clause and return whether an error was encountered. | |
| template<typename ClauseT> | |
| static bool | validateMultidimClauseExprs (SemaBase &SemaRef, const ClauseT *Clause, const OMPXBareClause *BareClause) |
| Check the number of expressions specified in a multidimensional clause and return whether an error was encountered. | |
| static bool | validateMultidimClauses (SemaBase &SemaRef, ArrayRef< OMPClause * > Clauses, bool MayHaveBareClause=false) |
| Check the number of expressions specified in clauses that can contain multidimensional values, e.g., num_teams and thread_limit. | |
| static bool | checkMutuallyExclusiveClauses (Sema &S, ArrayRef< OMPClause * > Clauses, ArrayRef< OpenMPClauseKind > MutuallyExclusiveClauses) |
| Find and diagnose mutually exclusive clause kinds. | |
| static bool | hasClauses (ArrayRef< OMPClause * > Clauses, const OpenMPClauseKind K) |
| Check for existence of a map clause in the list of clauses. | |
| template<typename... Params> | |
| static bool | hasClauses (ArrayRef< OMPClause * > Clauses, const OpenMPClauseKind K, const Params... ClauseTypes) |
| static bool | isClauseMappable (ArrayRef< OMPClause * > Clauses) |
| Check if the variables in the mapping clause are externally visible. | |
| static bool | checkReductionClauseWithNogroup (Sema &S, ArrayRef< OMPClause * > Clauses) |
| static void | updatePreInits (OMPLoopTransformationDirective *Transform, SmallVectorImpl< Stmt * > &PreInits) |
| Updates OriginalInits by checking Transform against loop transformation directives and appending their pre-inits if a match is found. | |
| static void | addLoopPreInits (ASTContext &Context, OMPLoopBasedDirective::HelperExprs &LoopHelper, Stmt *LoopStmt, ArrayRef< Stmt * > OriginalInit, SmallVectorImpl< Stmt * > &PreInits) |
| Add preinit statements that need to be propagated from the selected loop. | |
| static void | collectLoopStmts (Stmt *AStmt, MutableArrayRef< Stmt * > LoopStmts) |
| Collect the loop statements (ForStmt or CXXRangeForStmt) of the affected loop of a construct. | |
| static Expr * | makeFloorIVRef (Sema &SemaRef, ArrayRef< VarDecl * > FloorIndVars, int I, QualType IVTy, DeclRefExpr *OrigCntVar) |
| Build and return a DeclRefExpr for the floor induction variable using the SemaRef and the provided parameters. | |
| static OpenMPDirectiveKind | getOpenMPCaptureRegionForClause (OpenMPDirectiveKind DKind, OpenMPClauseKind CKind, llvm::omp::Version OMPVersion, OpenMPDirectiveKind NameModifier=OMPD_unknown) |
| static bool | isNonNegativeIntegerValue (Expr *&ValExpr, Sema &SemaRef, OpenMPClauseKind CKind, bool StrictlyPositive, bool BuildCapture=false, OpenMPDirectiveKind DKind=OMPD_unknown, OpenMPDirectiveKind *CaptureRegion=nullptr, Stmt **HelperValStmt=nullptr) |
| static std::string | getListOfPossibleValues (OpenMPClauseKind K, unsigned First, unsigned Last, ArrayRef< unsigned > Exclude={}) |
| static bool | findOMPAllocatorHandleT (Sema &S, SourceLocation Loc, DSAStackTy *Stack) |
| Tries to find omp_allocator_handle_t type. | |
| static OMPClause * | createTransparentClause (Sema &SemaRef, ASTContext &Ctx, Expr *ImpexTypeArg, Stmt *HelperValStmt, OpenMPDirectiveKind CaptureRegion, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
| static bool | checkScheduleModifiers (Sema &S, OpenMPScheduleClauseModifier M1, OpenMPScheduleClauseModifier M2, SourceLocation M1Loc, SourceLocation M2Loc) |
| static bool | isValidInteropVariable (Sema &SemaRef, Expr *InteropVarExpr, SourceLocation VarLoc, OpenMPClauseKind Kind) |
| template<typename T, typename U> | |
| static T | filterLookupForUDReductionAndMapper (SmallVectorImpl< U > &Lookups, const llvm::function_ref< T(ValueDecl *)> Gen) |
| static NamedDecl * | findAcceptableDecl (Sema &SemaRef, NamedDecl *D) |
| static void | argumentDependentLookup (Sema &SemaRef, const DeclarationNameInfo &Id, SourceLocation Loc, QualType Ty, SmallVectorImpl< UnresolvedSet< 8 > > &Lookups) |
| static ExprResult | buildDeclareReductionRef (Sema &SemaRef, SourceLocation Loc, SourceRange Range, Scope *S, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, QualType Ty, CXXCastPath &BasePath, Expr *UnresolvedReduction) |
| static bool | checkOMPArraySectionConstantForReduction (ASTContext &Context, const ArraySectionExpr *OASE, bool &SingleElement, SmallVectorImpl< llvm::APSInt > &ArraySizes) |
| static BinaryOperatorKind | getRelatedCompoundReductionOp (BinaryOperatorKind BOK) |
| static bool | actOnOMPReductionKindClause (Sema &S, DSAStackTy *Stack, OpenMPClauseKind ClauseKind, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions, ReductionData &RD) |
| static bool | findOMPDependT (Sema &S, SourceLocation Loc, DSAStackTy *Stack, bool Diagnose=true) |
| Tries to find omp_depend_t. type. | |
| static DoacrossDataInfoTy | ProcessOpenMPDoacrossClauseCommon (Sema &SemaRef, bool IsSource, ArrayRef< Expr * > VarList, DSAStackTy *Stack, SourceLocation EndLoc) |
| static bool | checkTypeMappable (SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, QualType QTy, bool FullCheck=true) |
| static bool | checkArrayExpressionDoesNotReferToWholeSize (Sema &SemaRef, const Expr *E, QualType BaseQTy) |
| Return true if it can be proven that the provided array expression (array section or array subscript) does NOT specify the whole size of the array whose base type is BaseQTy. | |
| static bool | checkArrayExpressionDoesNotReferToUnitySize (Sema &SemaRef, const Expr *E, QualType BaseQTy) |
| static bool | checkMapConflicts (Sema &SemaRef, DSAStackTy *DSAS, const ValueDecl *VD, const Expr *E, bool CurrentRegionOnly, OMPClauseMappableExprCommon::MappableExprComponentListRef CurComponents, OpenMPClauseKind CKind) |
| static DeclRefExpr * | buildImplicitMap (Sema &S, QualType BaseType, DSAStackTy *Stack, SmallVectorImpl< OMPClause * > &Maps) |
| static ExprResult | buildImplicitMapper (Sema &S, QualType BaseType, DSAStackTy *Stack) |
| static bool | hasUserDefinedMapper (Sema &SemaRef, Scope *S, CXXScopeSpec &MapperIdScopeSpec, const DeclarationNameInfo &MapperId, QualType Type) |
| static bool | isImplicitMapperNeeded (Sema &S, DSAStackTy *Stack, QualType CanonType, const Expr *E) |
| static void | checkMappableExpressionList (Sema &SemaRef, DSAStackTy *DSAS, OpenMPClauseKind CKind, MappableVarListInfo &MVLI, SourceLocation StartLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo MapperId, ArrayRef< Expr * > UnresolvedMappers, OpenMPMapClauseKind MapType=OMPC_MAP_unknown, ArrayRef< OpenMPMapModifierKind > Modifiers={}, bool IsMapTypeImplicit=false, bool NoDiagnose=false) |
| static bool | findOMPEventHandleT (Sema &S, SourceLocation Loc, DSAStackTy *Stack) |
| Tries to find omp_event_handle_t type. | |
| static void | checkDeclInTargetContext (SourceLocation SL, SourceRange SR, Sema &SemaRef, Decl *D) |
| static bool | checkValueDeclInTarget (SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, ValueDecl *VD) |
| static bool | findOMPAlloctraitT (Sema &S, SourceLocation Loc, DSAStackTy *Stack) |
| Tries to find omp_alloctrait_t type. | |
| static void | checkOMPAssumeAttr (Sema &S, SourceLocation Loc, StringRef AssumptionStr) |
Check if AssumptionStr is a known assumption and warn if not. | |
This file implements semantic analysis for OpenMP directives and clauses.
Definition in file SemaOpenMP.cpp.
| #define ABSTRACT_STMT | ( | CLASS | ) |
| #define COMMON_OMP_LOOP_TRANSFORMATION | ( | CLASS, | |
| PARENT ) |
| #define DSAStack static_cast<DSAStackTy *>(VarDataSharingAttributesStack) |
Definition at line 2081 of file SemaOpenMP.cpp.
Referenced by clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPAllocateClause(), clang::SemaOpenMP::ActOnOpenMPAllocateDirective(), clang::SemaOpenMP::ActOnOpenMPAllocatorClause(), clang::SemaOpenMP::ActOnOpenMPAtomicDirective(), clang::SemaOpenMP::ActOnOpenMPCall(), clang::SemaOpenMP::ActOnOpenMPCancelDirective(), clang::SemaOpenMP::ActOnOpenMPCancellationPointDirective(), clang::SemaOpenMP::ActOnOpenMPCopyinClause(), clang::SemaOpenMP::ActOnOpenMPCopyprivateClause(), clang::SemaOpenMP::ActOnOpenMPCriticalDirective(), clang::SemaOpenMP::ActOnOpenMPDeclareMapperDirective(), clang::SemaOpenMP::ActOnOpenMPDeclareMapperDirectiveVarDecl(), clang::SemaOpenMP::ActOnOpenMPDefaultClause(), clang::SemaOpenMP::ActOnOpenMPDefaultmapClause(), clang::SemaOpenMP::ActOnOpenMPDependClause(), clang::SemaOpenMP::ActOnOpenMPDepobjClause(), clang::SemaOpenMP::ActOnOpenMPDestroyClause(), clang::SemaOpenMP::ActOnOpenMPDetachClause(), clang::SemaOpenMP::ActOnOpenMPDeviceClause(), clang::SemaOpenMP::ActOnOpenMPDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPDistScheduleClause(), clang::SemaOpenMP::ActOnOpenMPDoacrossClause(), clang::SemaOpenMP::ActOnOpenMPDynGroupprivateClause(), clang::SemaOpenMP::ActOnOpenMPExclusiveClause(), clang::SemaOpenMP::ActOnOpenMPExecutableDirective(), clang::SemaOpenMP::ActOnOpenMPFilterClause(), clang::SemaOpenMP::ActOnOpenMPFinalClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPForDirective(), clang::SemaOpenMP::ActOnOpenMPForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPFromClause(), clang::SemaOpenMP::ActOnOpenMPGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPGrainsizeClause(), clang::SemaOpenMP::ActOnOpenMPHasDeviceAddrClause(), clang::SemaOpenMP::ActOnOpenMPIdExpression(), clang::SemaOpenMP::ActOnOpenMPIfClause(), clang::SemaOpenMP::ActOnOpenMPInclusiveClause(), clang::SemaOpenMP::ActOnOpenMPInReductionClause(), clang::SemaOpenMP::ActOnOpenMPIsDevicePtrClause(), clang::SemaOpenMP::ActOnOpenMPIteratorVarDecl(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPLinearClause(), clang::SemaOpenMP::ActOnOpenMPLoopInitialization(), clang::SemaOpenMP::ActOnOpenMPMapClause(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMessageClause(), clang::SemaOpenMP::ActOnOpenMPNocontextClause(), clang::SemaOpenMP::ActOnOpenMPNontemporalClause(), clang::SemaOpenMP::ActOnOpenMPNovariantsClause(), clang::SemaOpenMP::ActOnOpenMPNowaitClause(), clang::SemaOpenMP::ActOnOpenMPNumTasksClause(), clang::SemaOpenMP::ActOnOpenMPNumTeamsClause(), clang::SemaOpenMP::ActOnOpenMPNumThreadsClause(), clang::SemaOpenMP::ActOnOpenMPOrderClause(), clang::SemaOpenMP::ActOnOpenMPOrderedClause(), clang::SemaOpenMP::ActOnOpenMPOrderedDirective(), clang::SemaOpenMP::ActOnOpenMPParallelDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelSectionsDirective(), clang::SemaOpenMP::ActOnOpenMPPriorityClause(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::SemaOpenMP::ActOnOpenMPReductionClause(), clang::SemaOpenMP::ActOnOpenMPRegionEnd(), clang::SemaOpenMP::ActOnOpenMPRegionStart(), clang::SemaOpenMP::ActOnOpenMPRequiresDirective(), clang::SemaOpenMP::ActOnOpenMPScanDirective(), clang::SemaOpenMP::ActOnOpenMPScheduleClause(), clang::SemaOpenMP::ActOnOpenMPSectionDirective(), clang::SemaOpenMP::ActOnOpenMPSectionsDirective(), clang::SemaOpenMP::ActOnOpenMPSharedClause(), clang::SemaOpenMP::ActOnOpenMPSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTaskDirective(), clang::SemaOpenMP::ActOnOpenMPTaskgroupDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTaskReductionClause(), clang::SemaOpenMP::ActOnOpenMPTeamsDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPThreadLimitClause(), clang::SemaOpenMP::ActOnOpenMPToClause(), clang::SemaOpenMP::ActOnOpenMPTransparentClause(), clang::SemaOpenMP::ActOnOpenMPUntiedClause(), clang::SemaOpenMP::ActOnOpenMPUseDeviceAddrClause(), clang::SemaOpenMP::ActOnOpenMPUseDevicePtrClause(), clang::SemaOpenMP::ActOnOpenMPUsesAllocatorClause(), clang::SemaOpenMP::ActOnOpenMPXDynCGroupMemClause(), clang::SemaOpenMP::checkDeclIsAllowedInOpenMPTarget(), clang::SemaOpenMP::CheckOMPGroupPrivateDecl(), clang::SemaOpenMP::CheckOMPRequiresDecl(), clang::SemaOpenMP::CheckOMPThreadPrivateDecl(), clang::SemaOpenMP::EndOpenMPClause(), clang::SemaOpenMP::EndOpenMPDSABlock(), clang::SemaOpenMP::getOpenMPDeclareMapperVarName(), clang::SemaOpenMP::isInOpenMPTargetExecutionDirective(), clang::SemaOpenMP::isInOpenMPTaskUntiedContext(), clang::SemaOpenMP::isOpenMPCapturedByRef(), clang::SemaOpenMP::isOpenMPCapturedDecl(), clang::SemaOpenMP::isOpenMPDeclareMapperVarDeclAllowed(), clang::SemaOpenMP::isOpenMPGlobalCapturedDecl(), clang::SemaOpenMP::isOpenMPPrivateDecl(), clang::SemaOpenMP::isOpenMPRebuildMemberExpr(), clang::SemaOpenMP::isOpenMPTargetCapturedDecl(), clang::SemaOpenMP::setOpenMPCaptureKind(), clang::SemaOpenMP::StartOpenMPClause(), clang::SemaOpenMP::startOpenMPCXXRangeFor(), clang::SemaOpenMP::StartOpenMPDSABlock(), clang::SemaOpenMP::startOpenMPLoop(), clang::SemaOpenMP::tryCaptureOpenMPLambdas(), and clang::SemaOpenMP::VerifyPositiveIntegerConstantInClause().
| #define OMPCANONICALLOOPNESTTRANSFORMATIONDIRECTIVE | ( | CLASS, | |
| PARENT ) |
| #define OMPCANONICALLOOPSEQUENCETRANSFORMATIONDIRECTIVE | ( | CLASS, | |
| PARENT ) |
| #define STMT | ( | CLASS, | |
| PARENT ) |
|
static |
Definition at line 21867 of file SemaOpenMP.cpp.
References clang::Sema::ActOnFinishFullExpr(), clang::Sema::ActOnIntegerConstant(), clang::Sema::ActOnUninitializedDecl(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildBinOp(), buildCapture(), clang::Sema::BuildCStyleCastExpr(), buildDeclareReductionRef(), buildDeclRefExpr(), buildVarDecl(), clang::VarDecl::CallInit, clang::cast(), checkOMPArraySectionConstantForReduction(), clang::Sema::Context, clang::CallExpr::Create(), clang::FloatingLiteral::Create(), clang::ImplicitCastExpr::Create(), clang::IntegerLiteral::Create(), clang::Sema::CreateBuiltinArraySubscriptExpr(), clang::Sema::CreateBuiltinBinOp(), clang::Sema::CreateBuiltinUnaryOp(), clang::InitializationKind::CreateCopy(), clang::Sema::CurContext, clang::Sema::CurFPFeatureOverrides(), clang::VarDecl::DeclarationOnly, clang::Sema::DefaultFunctionArrayLvalueConversion(), clang::Sema::DefaultLvalueConversion(), clang::SemaBase::Diag(), clang::Dim, clang::ActionResult< PtrTy, Compress >::get(), clang::ActionResult< PtrTy, Compress >::getAs(), clang::Type::getAs(), clang::DeclarationName::getAsIdentifierInfo(), clang::Decl::getAttrs(), clang::ArraySectionExpr::getBaseOriginalType(), clang::SourceRange::getBegin(), clang::CXXScopeSpec::getBeginLoc(), clang::DeclarationNameInfo::getBeginLoc(), clang::DeclarationName::getCXXOverloadedOperator(), clang::DeclRefExpr::getDecl(), clang::DeclarationNameInfo::getEndLoc(), clang::Expr::getExprLoc(), clang::VarDecl::getInit(), clang::VarDecl::getInitStyle(), clang::Sema::getLangOpts(), clang::DeclarationNameInfo::getLoc(), clang::Decl::getLocation(), clang::DeclarationNameInfo::getName(), clang::NamedDecl::getName(), clang::QualType::getNonReferenceType(), getOpenMPClauseNameForDiag(), clang::Type::getPointeeType(), getPrivateItem(), getRelatedCompoundReductionOp(), clang::ASTContext::getSizeType(), clang::Expr::getType(), clang::ValueDecl::getType(), clang::Expr::getValueKind(), clang::ASTContext::getVariableArrayType(), clang::Decl::hasAttr(), clang::Decl::hasAttrs(), clang::VarDecl::hasInit(), clang::Type::hasSignedIntegerRepresentation(), clang::Sema::IgnoredValueConversions(), clang::Expr::IgnoreParens(), clang::Init, clang::InitializedEntity::InitializeTemporary(), clang::isa(), clang::Type::isAnyComplexType(), clang::Type::isArithmeticType(), clang::DeclContext::isDependentContext(), clang::Type::isFloatingType(), clang::Type::isIntegerType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Decl::isInvalidDecl(), clang::SemaOpenMP::isOpenMPCapturedDecl(), clang::isOpenMPParallelDirective(), clang::isOpenMPSimdDirective(), clang::isOpenMPTargetExecutionDirective(), clang::isOpenMPTaskingDirective(), clang::isOpenMPTeamsDirective(), clang::isOpenMPWorksharingDirective(), clang::Type::isPointerType(), clang::Type::isRealFloatingType(), clang::Type::isRecordType(), clang::Type::isReferenceType(), clang::Type::isScalarType(), clang::ActionResult< PtrTy, Compress >::isUnset(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::CXXScopeSpec::isValid(), clang::Type::isVariablyModifiedType(), clang::Sema::LangOpts, clang::Normal, clang::NUM_OVERLOADED_OPERATORS, clang::OK_Ordinary, clang::OO_None, clang::Sema::OpenMP(), clang::Stmt::Profile(), rejectConstNotMutableType(), reportOriginalDsa(), clang::Sema::RequireCompleteType(), clang::Seq, clang::SourceRange::setBegin(), clang::SourceRange::setEnd(), clang::VarDecl::setInit(), clang::VarDecl::setInitStyle(), clang::Sema::targetDiag(), clang::VK_LValue, and clang::VK_PRValue.
Referenced by clang::SemaOpenMP::ActOnOpenMPInReductionClause(), clang::SemaOpenMP::ActOnOpenMPReductionClause(), and clang::SemaOpenMP::ActOnOpenMPTaskReductionClause().
|
static |
Add preinit statements that need to be propagated from the selected loop.
Definition at line 15660 of file SemaOpenMP.cpp.
References clang::cast(), clang::DeclStmt::getBeginLoc(), clang::DeclStmt::getDeclGroup(), clang::DeclStmt::getEndLoc(), and clang::isa().
Referenced by clang::SemaOpenMP::ActOnOpenMPFlattenDirective(), clang::SemaOpenMP::ActOnOpenMPFuseDirective(), clang::SemaOpenMP::ActOnOpenMPInterchangeDirective(), clang::SemaOpenMP::ActOnOpenMPReverseDirective(), clang::SemaOpenMP::ActOnOpenMPSplitDirective(), clang::SemaOpenMP::ActOnOpenMPStripeDirective(), clang::SemaOpenMP::ActOnOpenMPTileDirective(), and clang::SemaOpenMP::ActOnOpenMPUnrollDirective().
|
static |
Append the Item or the content of a CompoundStmt to the list TargetList.
A CompoundStmt is used as container in case multiple statements need to be stored in lieu of using an explicit list. Flattening is necessary because contained DeclStmts need to be visible after the execution of the list. Used for OpenMP pre-init declarations/statements.
Definition at line 10495 of file SemaOpenMP.cpp.
Referenced by buildPreInits(), and checkOpenMPLoop().
|
static |
Definition at line 3627 of file SemaOpenMP.cpp.
References clang::Decl::addAttr(), clang::Expr::containsUnexpandedParameterPack(), clang::Sema::Context, clang::ASTContext::getASTMutationListener(), clang::Decl::hasAttr(), clang::Expr::isInstantiationDependent(), clang::Expr::isTypeDependent(), and clang::Expr::isValueDependent().
Referenced by clang::SemaOpenMP::ActOnOpenMPAllocateDirective(), and checkAllocateClauses().
|
static |
Definition at line 21503 of file SemaOpenMP.cpp.
References findAcceptableDecl(), clang::Sema::FindAssociatedClassesAndNamespaces(), clang::DeclarationNameInfo::getName(), clang::isa(), clang::Sema::isVisible(), and clang::VK_LValue.
Referenced by buildDeclareReductionRef(), buildUserDefinedMapperRef(), and hasUserDefinedMapper().
|
static |
Definition at line 5039 of file SemaOpenMP.cpp.
References buildCaptureDecl(), buildDeclRefExpr(), clang::Sema::CreateBuiltinUnaryOp(), clang::Sema::CurContext, clang::Sema::DefaultLvalueConversion(), clang::ExprError(), clang::ActionResult< PtrTy, Compress >::get(), clang::IdentifierTable::get(), clang::Sema::getASTContext(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::QualType::getNonReferenceType(), clang::Expr::getObjectKind(), clang::Expr::getType(), clang::ValueDecl::getType(), clang::ASTContext::Idents, clang::Expr::isGLValue(), clang::Type::isPointerType(), clang::ActionResult< PtrTy, Compress >::isUsable(), and clang::OK_Ordinary.
|
static |
Definition at line 5017 of file SemaOpenMP.cpp.
References buildCaptureDecl(), buildDeclRefExpr(), clang::cast(), clang::Sema::CurContext, clang::Expr::getExprLoc(), clang::NamedDecl::getIdentifier(), clang::QualType::getNonReferenceType(), clang::ValueDecl::getType(), clang::isa(), clang::SemaOpenMP::isOpenMPCapturedDecl(), and clang::Sema::OpenMP().
Referenced by actOnOMPReductionKindClause(), clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPAllocateClause(), clang::SemaOpenMP::ActOnOpenMPCopyprivateClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPHasDeviceAddrClause(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPLinearClause(), clang::SemaOpenMP::ActOnOpenMPLoopInitialization(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::SemaOpenMP::ActOnOpenMPSharedClause(), clang::SemaOpenMP::ActOnOpenMPUseDeviceAddrClause(), and clang::SemaOpenMP::ActOnOpenMPUseDevicePtrClause().
|
static |
Definition at line 4986 of file SemaOpenMP.cpp.
References clang::DeclContext::addHiddenDecl(), clang::Sema::AddInitializerToDecl(), clang::C, clang::OMPCapturedExprDecl::Create(), clang::Sema::CreateBuiltinUnaryOp(), clang::ActionResult< PtrTy, Compress >::get(), clang::Sema::getASTContext(), clang::Stmt::getBeginLoc(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::Expr::getObjectKind(), clang::Expr::IgnoreImpCasts(), clang::Init, clang::Expr::isGLValue(), clang::ActionResult< PtrTy, Compress >::isUsable(), and clang::OK_Ordinary.
Referenced by buildCapture(), buildCapture(), and clang::SemaOpenMP::isOpenMPCapturedDecl().
|
static |
Build 'VarRef = Start.
Definition at line 10351 of file SemaOpenMP.cpp.
References clang::Sema::BuildBinOp(), clang::Sema::Context, clang::Converting, clang::ExprError(), clang::ActionResult< PtrTy, Compress >::get(), clang::Expr::getType(), clang::ASTContext::hasSameType(), clang::Init, clang::ActionResult< PtrTy, Compress >::isUsable(), and clang::Sema::PerformImplicitConversion().
Referenced by checkOpenMPLoop().
|
static |
Build 'VarRef = Start + Iter * Step'.
Definition at line 10375 of file SemaOpenMP.cpp.
References clang::Sema::ActOnParenExpr(), clang::Sema::BuildBinOp(), clang::Sema::Context, clang::Converting, clang::Sema::CreateBuiltinBinOp(), clang::ExprError(), clang::ActionResult< PtrTy, Compress >::get(), clang::Expr::getType(), clang::ASTContext::hasSameType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Type::isOverloadableType(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::Sema::PerformImplicitConversion(), and clang::Update.
Referenced by checkOpenMPLoop(), and FinishOpenMPLinearClause().
|
static |
Definition at line 21561 of file SemaOpenMP.cpp.
References clang::UnresolvedSetImpl::addDecl(), clang::UnresolvedSetImpl::append(), clang::Sema::AR_inaccessible, argumentDependentLookup(), clang::LookupResult::begin(), clang::UnresolvedSetImpl::begin(), clang::Sema::BuildBasePathArray(), clang::Sema::BuildDeclRefExpr(), clang::Type::castAsRecordDecl(), clang::Sema::CheckBaseClassAccess(), clang::LookupResult::clear(), clang::Type::containsUnexpandedParameterPack(), clang::Sema::Context, clang::UnresolvedLookupExpr::Create(), clang::Sema::CurContext, clang::SemaBase::Diag(), clang::LookupResult::empty(), clang::LookupResult::end(), clang::UnresolvedSetImpl::end(), clang::ExprEmpty(), clang::ExprError(), filterLookupForUDReductionAndMapper(), clang::CXXBasePaths::front(), clang::Sema::getASTContext(), clang::ASTContext::getCanonicalType(), clang::Sema::getLangOpts(), clang::QualType::getNonReferenceType(), clang::Scope::getParent(), clang::LookupResult::getRepresentativeDecl(), clang::ValueDecl::getType(), clang::QualType::getUnqualifiedType(), clang::CXXScopeSpec::getWithLocInContext(), clang::ASTContext::hasSameType(), clang::CXXBasePaths::isAmbiguous(), clang::Sema::isCompleteType(), clang::Scope::isDeclScope(), clang::DeclContext::isDependentContext(), clang::Type::isDependentType(), clang::Sema::IsDerivedFrom(), clang::Type::isInstantiationDependentType(), clang::CXXScopeSpec::isInvalid(), clang::Decl::isInvalidDecl(), clang::QualType::isMoreQualifiedThan(), clang::Type::isRecordType(), clang::CXXScopeSpec::isSet(), clang::Sema::LookupOMPReductionName, clang::Sema::LookupParsedName(), clang::Sema::LookupQualifiedName(), clang::Set, clang::LookupResult::suppressDiagnostics(), and clang::VK_LValue.
Referenced by actOnOMPReductionKindClause().
|
static |
Definition at line 1625 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::DeclRefExpr::Create(), clang::Sema::getASTContext(), clang::Decl::markUsed(), clang::Decl::setReferenced(), and clang::VK_LValue.
Referenced by actOnOMPReductionKindClause(), clang::SemaOpenMP::ActOnOpenMPCopyinClause(), clang::SemaOpenMP::ActOnOpenMPCopyprivateClause(), clang::SemaOpenMP::ActOnOpenMPDeclareMapperDirectiveVarDecl(), clang::SemaOpenMP::ActOnOpenMPDeclareReductionCombinerStart(), clang::SemaOpenMP::ActOnOpenMPDeclareReductionInitializerStart(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPFlattenDirective(), clang::SemaOpenMP::ActOnOpenMPFuseDirective(), clang::SemaOpenMP::ActOnOpenMPInterchangeDirective(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPLinearClause(), clang::SemaOpenMP::ActOnOpenMPLoopInitialization(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::SemaOpenMP::ActOnOpenMPReverseDirective(), clang::SemaOpenMP::ActOnOpenMPSplitDirective(), clang::SemaOpenMP::ActOnOpenMPTileDirective(), clang::SemaOpenMP::ActOnOpenMPUnrollDirective(), clang::SemaOpenMP::ActOnOpenMPUseDevicePtrClause(), buildCapture(), buildCapture(), buildDistanceFunc(), buildImplicitMap(), checkOpenMPLoop(), clang::SemaOpenMP::EndOpenMPDSABlock(), FinishOpenMPLinearClause(), clang::SemaOpenMP::isOpenMPCapturedDecl(), and makeFloorIVRef().
|
static |
Create a closure that computes the number of iterations of a loop.
| Actions | The Sema object. |
| LogicalTy | Type for the logical iteration number. |
| Rel | Comparison operator of the loop condition. |
| StartExpr | Value of the loop counter at the first iteration. |
| StopExpr | Expression the loop counter is compared against in the loop condition. |
| StepExpr | Amount of increment after each iteration. |
Definition at line 6005 of file SemaOpenMP.cpp.
References clang::Sema::ActOnCapturedRegionEnd(), clang::Sema::ActOnCapturedRegionStart(), clang::Sema::ActOnCompoundStmt(), clang::Sema::ActOnConditionalOp(), clang::AssertSuccess(), clang::Sema::BuildBinOp(), clang::Sema::BuildCStyleCastExpr(), clang::Sema::BuildDeclRefExpr(), buildDeclRefExpr(), clang::Sema::BuildUnaryOp(), clang::cast(), clang::CR_Default, clang::IntegerLiteral::Create(), clang::Sema::CurContext, clang::Sema::getASTContext(), clang::Sema::getCurScope(), clang::ASTContext::getIntWidth(), clang::ASTContext::getLValueReferenceType(), clang::CapturedDecl::getParam(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::ValueDecl::getType(), precomputeExpr(), clang::VK_LValue, and clang::Zero.
Referenced by clang::SemaOpenMP::ActOnOpenMPCanonicalLoop().
|
static |
Definition at line 24763 of file SemaOpenMP.cpp.
References clang::SemaOpenMP::ActOnOpenMPMapClause(), buildDeclRefExpr(), clang::Sema::BuildMemberExpr(), buildVarDecl(), clang::RecordDecl::fields(), clang::Decl::getAccess(), clang::SourceRange::getBegin(), clang::NamedDecl::getDeclName(), clang::FieldDecl::getSourceRange(), clang::TagDecl::getSourceRange(), clang::ValueDecl::getType(), clang::DeclAccessPair::make(), clang::OK_Ordinary, clang::OMPC_MAP_MODIFIER_unknown, clang::Sema::OpenMP(), and clang::VK_LValue.
Referenced by buildImplicitMapper().
|
static |
Definition at line 24800 of file SemaOpenMP.cpp.
References clang::DeclContext::addDecl(), clang::AS_none, buildImplicitMap(), clang::cast(), clang::DeclRefExpr::Create(), clang::OMPDeclareMapperDecl::Create(), clang::ASTContext::DeclarationNames, clang::RecordDecl::field_begin(), clang::IdentifierTable::get(), clang::Decl::getDeclContext(), clang::Decl::getLocation(), clang::DeclContext::getParentASTContext(), clang::Sema::getScopeForContext(), clang::ASTContext::Idents, clang::Sema::PushOnScopeChains(), clang::Decl::setDeclContext(), clang::Decl::setLexicalDeclContext(), and clang::VK_LValue.
|
static |
Create a closure that computes the loop variable from the logical iteration number.
| Actions | The Sema object. |
| LoopVarTy | Type for the loop variable used for result value. |
| LogicalTy | Type for the logical iteration number. |
| StartExpr | Value of the loop counter at the first iteration. |
| Step | Amount of increment after each iteration. |
| Deref | Whether the loop variable is a dereference of the loop counter variable. |
Definition at line 6153 of file SemaOpenMP.cpp.
References clang::Sema::ActOnCapturedRegionEnd(), clang::Sema::ActOnCapturedRegionStart(), clang::AssertSuccess(), clang::Sema::BuildBinOp(), clang::Sema::BuildDeclRefExpr(), clang::Sema::BuildUnaryOp(), clang::cast(), clang::CR_Default, clang::Sema::CurContext, clang::ExplicitByVal, clang::Sema::getASTContext(), clang::Sema::getCurScope(), clang::DeclRefExpr::getDecl(), clang::ASTContext::getLValueReferenceType(), clang::Invalid, clang::sema::Skip, clang::Sema::tryCaptureVariable(), and clang::VK_LValue.
Referenced by clang::SemaOpenMP::ActOnOpenMPCanonicalLoop().
Build postupdate expression for the given list of postupdates expressions.
Definition at line 10532 of file SemaOpenMP.cpp.
References clang::Sema::BuildCStyleCastExpr(), clang::Sema::Context, clang::Sema::CreateBuiltinBinOp(), clang::ActionResult< PtrTy, Compress >::get(), clang::Expr::getExprLoc(), clang::ASTContext::getTrivialTypeSourceInfo(), and clang::ASTContext::VoidTy.
Referenced by clang::SemaOpenMP::ActOnOpenMPInReductionClause(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPLinearClause(), clang::SemaOpenMP::ActOnOpenMPReductionClause(), and clang::SemaOpenMP::ActOnOpenMPTaskReductionClause().
|
static |
Build pre-init statement for the given statements.
Definition at line 10521 of file SemaOpenMP.cpp.
References appendFlattenedStmtList(), and clang::CompoundStmt::Create().
|
static |
Build preinits statement for the given declarations.
Definition at line 10509 of file SemaOpenMP.cpp.
References buildPreInits().
|
static |
Build preinits statement for the given declarations.
Definition at line 10478 of file SemaOpenMP.cpp.
References clang::DeclGroupRef::Create().
Referenced by clang::SemaOpenMP::ActOnOpenMPDeviceClause(), clang::SemaOpenMP::ActOnOpenMPDistScheduleClause(), clang::SemaOpenMP::ActOnOpenMPDynGroupprivateClause(), clang::SemaOpenMP::ActOnOpenMPFilterClause(), clang::SemaOpenMP::ActOnOpenMPFinalClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPFlattenDirective(), clang::SemaOpenMP::ActOnOpenMPFuseDirective(), clang::SemaOpenMP::ActOnOpenMPIfClause(), clang::SemaOpenMP::ActOnOpenMPInReductionClause(), clang::SemaOpenMP::ActOnOpenMPInterchangeDirective(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPLinearClause(), clang::SemaOpenMP::ActOnOpenMPMessageClause(), clang::SemaOpenMP::ActOnOpenMPNocontextClause(), clang::SemaOpenMP::ActOnOpenMPNovariantsClause(), clang::SemaOpenMP::ActOnOpenMPNumTeamsClause(), clang::SemaOpenMP::ActOnOpenMPNumThreadsClause(), clang::SemaOpenMP::ActOnOpenMPReductionClause(), clang::SemaOpenMP::ActOnOpenMPReverseDirective(), clang::SemaOpenMP::ActOnOpenMPScheduleClause(), clang::SemaOpenMP::ActOnOpenMPSplitDirective(), clang::SemaOpenMP::ActOnOpenMPStripeDirective(), clang::SemaOpenMP::ActOnOpenMPTaskReductionClause(), clang::SemaOpenMP::ActOnOpenMPThreadLimitClause(), clang::SemaOpenMP::ActOnOpenMPTileDirective(), clang::SemaOpenMP::ActOnOpenMPTransparentClause(), clang::SemaOpenMP::ActOnOpenMPUnrollDirective(), clang::SemaOpenMP::ActOnOpenMPXDynCGroupMemClause(), buildPreInits(), checkOpenMPLoop(), and isNonNegativeIntegerValue().
|
static |
Definition at line 24625 of file SemaOpenMP.cpp.
References clang::UnresolvedSetImpl::append(), clang::Sema::AR_inaccessible, argumentDependentLookup(), clang::LookupResult::begin(), clang::UnresolvedSetImpl::begin(), clang::Sema::BuildDeclRefExpr(), clang::cast(), clang::Sema::CheckBaseClassAccess(), clang::LookupResult::clear(), clang::Type::containsUnexpandedParameterPack(), clang::Sema::Context, clang::UnresolvedLookupExpr::Create(), clang::Sema::CurContext, clang::SemaBase::Diag(), clang::LookupResult::end(), clang::UnresolvedSetImpl::end(), clang::ExprEmpty(), clang::ExprError(), filterLookupForUDReductionAndMapper(), clang::CXXBasePaths::front(), clang::Type::getAsArrayTypeUnsafe(), clang::DeclarationNameInfo::getAsString(), clang::Sema::getASTContext(), clang::ASTContext::getCanonicalType(), clang::QualType::getCanonicalType(), clang::ArrayType::getElementType(), clang::Sema::getLangOpts(), clang::DeclarationNameInfo::getLoc(), clang::DeclarationNameInfo::getName(), clang::Scope::getParent(), clang::LookupResult::getRepresentativeDecl(), clang::ValueDecl::getType(), clang::QualType::getUnqualifiedType(), clang::CXXScopeSpec::getWithLocInContext(), clang::ASTContext::hasSameType(), clang::CXXBasePaths::isAmbiguous(), clang::Type::isArrayType(), clang::Scope::isDeclScope(), clang::DeclContext::isDependentContext(), clang::Type::isDependentType(), clang::Sema::IsDerivedFrom(), clang::Type::isInstantiationDependentType(), clang::CXXScopeSpec::isInvalid(), clang::Decl::isInvalidDecl(), clang::CXXScopeSpec::isSet(), clang::Type::isStructureOrClassType(), clang::Type::isUnionType(), clang::Sema::LookupOMPMapperName, clang::Sema::LookupParsedName(), clang::Set, clang::LookupResult::suppressDiagnostics(), and clang::VK_LValue.
Referenced by processImplicitMapsWithDefaultMappers().
|
static |
Build a variable declaration for OpenMP loop iteration variable.
Definition at line 1604 of file SemaOpenMP.cpp.
References clang::Decl::addAttr(), clang::Sema::Context, clang::VarDecl::Create(), clang::Sema::CurContext, clang::IdentifierTable::get(), clang::Preprocessor::getIdentifierTable(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::Sema::PP, clang::SC_None, and clang::Decl::setImplicit().
Definition at line 5835 of file SemaOpenMP.cpp.
References applyOMPAllocateAttribute(), clang::C, clang::cast(), checkPreviousOMPAllocateAttribute(), clang::OMPAllocateClause::classof(), clang::Sema::CurContext, clang::Data, clang::SemaBase::Diag(), getAllocatorKind(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::LangOptions::getOpenMPVersion(), getPrivateItem(), clang::Stmt::getSourceRange(), clang::DeclContext::isDependentContext(), clang::isOpenMPPrivate(), clang::isOpenMPTargetExecutionDirective(), and clang::isOpenMPTaskingDirective().
|
static |
Definition at line 23885 of file SemaOpenMP.cpp.
References clang::Sema::getASTContext(), clang::QualType::getTypePtr(), and clang::isa().
|
static |
Return true if it can be proven that the provided array expression (array section or array subscript) does NOT specify the whole size of the array whose base type is BaseQTy.
Definition at line 23827 of file SemaOpenMP.cpp.
References clang::Expr::EvaluateAsInt(), clang::Sema::getASTContext(), clang::QualType::getTypePtr(), clang::isa(), and clang::Type::isPointerType().
Referenced by checkMapConflicts().
|
static |
Definition at line 5329 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), clang::Sema::getLangOpts(), and clang::LangOptions::getOpenMPVersion().
Referenced by clang::SemaOpenMP::ActOnOpenMPExecutableDirective().
|
static |
Helper to check all clauses in a directive for structured binding capture conflicts.
Returns true if an error was found. If Body is provided and the directive has default(shared), bindings used in the body but not listed in explicit clauses are treated as implicit shared (by-reference).
Definition at line 3982 of file SemaOpenMP.cpp.
References clang::C, clang::cast(), checkDecompositionCaptureConflict(), and clang::DeclRefExpr::getDecl().
Referenced by clang::SemaOpenMP::ActOnOpenMPParallelDirective(), clang::SemaOpenMP::ActOnOpenMPTargetDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTaskDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTeamsGenericLoopDirective().
|
static |
Definition at line 26526 of file SemaOpenMP.cpp.
References clang::cast(), clang::SemaBase::Diag(), clang::Sema::getCurBlock(), clang::Sema::getCurCapturedRegion(), clang::Sema::getCurLambda(), clang::Decl::getLocation(), clang::isa(), and clang::Sema::LangOpts.
Referenced by clang::SemaOpenMP::checkDeclIsAllowedInOpenMPTarget().
|
static |
Check if bindings from the same structured binding have conflicting capture kinds (by-ref vs by-copy).
Bindings share the underlying DecompositionDecl storage, so mixing by-ref and by-copy clauses on different bindings from the same decomposition is not representable. For example: map(a) creates by-ref, firstprivate(b) creates by-copy.
Definition at line 3934 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag().
Referenced by checkClausesForDecompositionConflicts().
|
static |
Definition at line 11573 of file SemaOpenMP.cpp.
References clang::C, clang::SemaBase::Diag(), clang::Sema::getLangOpts(), clang::LangOptions::getOpenMPVersion(), and getPrivateItem().
Referenced by clang::SemaOpenMP::ActOnOpenMPGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective(), and clang::SemaOpenMP::ActOnOpenMPTeamsGenericLoopDirective().
|
static |
Definition at line 5641 of file SemaOpenMP.cpp.
References clang::C, clang::SemaBase::Diag(), clang::Sema::getLangOpts(), getOpenMPClauseNameForDiag(), and clang::LangOptions::getOpenMPVersion().
Referenced by clang::SemaOpenMP::ActOnOpenMPExecutableDirective().
|
static |
Return the expression of the base of the mappable expression or null if it cannot be determined and do all the necessary checks to see if the expression is valid as a standalone mappable expression.
In the process, record all the components of the expression.
Definition at line 24344 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::ArraySectionExpr::getLength(), clang::Stmt::getSourceRange(), and clang::Expr::IgnoreParens().
Referenced by clang::SemaOpenMP::ActOnOpenMPUseDeviceAddrClause().
|
static |
Definition at line 24376 of file SemaOpenMP.cpp.
References checkArrayExpressionDoesNotReferToWholeSize(), clang::SemaBase::Diag(), clang::ArraySectionExpr::getBase(), clang::ArraySectionExpr::getBaseOriginalType(), clang::QualType::getCanonicalType(), clang::Expr::getExprLoc(), clang::QualType::getNonReferenceType(), clang::Type::getPointeeType(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::Expr::IgnoreParenImpCasts(), clang::isa(), clang::Type::isAnyPointerType(), and clang::Sema::LangOpts.
|
static |
Definition at line 24966 of file SemaOpenMP.cpp.
References clang::OMPC_MAP_unknown.
Referenced by clang::SemaOpenMP::ActOnOpenMPFromClause(), clang::SemaOpenMP::ActOnOpenMPMapClause(), and clang::SemaOpenMP::ActOnOpenMPToClause().
|
static |
Find and diagnose mutually exclusive clause kinds.
Definition at line 12087 of file SemaOpenMP.cpp.
References clang::C, clang::SemaBase::Diag(), clang::OMPClause::getBeginLoc(), clang::OMPClause::getClauseKind(), and getOpenMPClauseNameForDiag().
Referenced by clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTaskDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPUnrollDirective().
|
static |
Definition at line 5346 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), clang::Sema::getLangOpts(), clang::DeclarationNameInfo::getName(), clang::LangOptions::getOpenMPVersion(), clang::isOpenMPDistributeDirective(), clang::isOpenMPGenericLoopDirective(), clang::isOpenMPNestingDistributeDirective(), clang::isOpenMPNestingTeamsDirective(), clang::isOpenMPOrderConcurrentNestableDirective(), clang::isOpenMPParallelDirective(), clang::isOpenMPSimdDirective(), clang::isOpenMPTargetDataManagementDirective(), clang::isOpenMPTargetExecutionDirective(), clang::isOpenMPTaskingDirective(), clang::isOpenMPTeamsDirective(), clang::isOpenMPWorksharingDirective(), clang::SourceLocation::isValid(), and clang::Sema::LangOpts.
Referenced by clang::SemaOpenMP::ActOnOpenMPExecutableDirective().
|
static |
Definition at line 21784 of file SemaOpenMP.cpp.
References clang::ArraySectionExpr::getBase(), clang::ArraySectionExpr::getColonLocFirst(), clang::ArraySectionExpr::getLength(), clang::Expr::IgnoreParenImpCasts(), and clang::SourceLocation::isValid().
Referenced by actOnOMPReductionKindClause().
|
static |
Check if AssumptionStr is a known assumption and warn if not.
Definition at line 28299 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag().
Referenced by clang::SemaOpenMP::handleOMPAssumeAttr().
|
static |
Called on a for stmt to check and extract its iteration space for further processing (such as collapsing).
Definition at line 10044 of file SemaOpenMP.cpp.
References clang::Sema::ActOnIntegerConstant(), clang::ASTContext::BoolTy, clang::Casting, clang::Sema::Context, clang::Sema::CurContext, clang::Sema::DefaultLvalueConversion(), clang::SemaBase::Diag(), clang::ActionResult< PtrTy, Compress >::get(), clang::Stmt::getBeginLoc(), clang::Decl::getCanonicalDecl(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::QualType::getNonReferenceType(), clang::LangOptions::getOpenMPVersion(), clang::Stmt::getSourceRange(), clang::ValueDecl::getType(), clang::Init, clang::DeclContext::isDependentContext(), clang::Type::isDependentType(), clang::Type::isIntegerType(), clang::isOpenMPCanonicalLoopSequenceTransformationDirective(), clang::isOpenMPDistributeDirective(), clang::isOpenMPGenericLoopDirective(), clang::isOpenMPLoopDirective(), clang::isOpenMPLoopTransformationDirective(), clang::isOpenMPTaskLoopDirective(), clang::isOpenMPWorksharingDirective(), clang::Type::isOverloadableType(), clang::Type::isPointerType(), clang::Sema::LangOpts, and clang::Sema::PerformImplicitConversion().
Referenced by checkOpenMPLoop().
|
static |
Called on a for stmt to check itself and nested loops (if any).
Definition at line 10588 of file SemaOpenMP.cpp.
References clang::Sema::ActOnConditionalOp(), clang::Sema::ActOnFinishFullExpr(), clang::Sema::ActOnIntegerConstant(), clang::Sema::AddInitializerToDecl(), appendFlattenedStmtList(), clang::Sema::BuildBinOp(), buildCounterInit(), buildCounterUpdate(), clang::Sema::BuildCStyleCastExpr(), buildDeclRefExpr(), buildPreInits(), buildVarDecl(), clang::C, clang::cast(), checkOpenMPIterationSpace(), clang::Expr::containsErrors(), clang::Sema::Context, clang::Converting, clang::Sema::CurContext, clang::SemaBase::Diag(), clang::Expr::EvaluateAsInt(), clang::ExprError(), fitsInto(), clang::ActionResult< PtrTy, Compress >::get(), clang::Sema::getASTContext(), clang::SourceRange::getBegin(), clang::Stmt::getBeginLoc(), clang::DeclRefExpr::getDecl(), clang::Expr::getExprLoc(), clang::APValue::getInt(), clang::ASTContext::getIntTypeForBitwidth(), clang::Sema::getLangOpts(), clang::CapturedDecl::getNumParams(), clang::CapturedDecl::getParam(), clang::Stmt::getSourceRange(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::Expr::getType(), clang::ValueDecl::getType(), clang::ASTContext::hasSameType(), clang::Type::hasSignedIntegerRepresentation(), clang::Type::hasUnsignedIntegerRepresentation(), clang::Stmt::IgnoreContainers(), clang::Expr::IgnoreImpCasts(), clang::Init, clang::isa(), clang::DeclContext::isDependentContext(), clang::Expr::isInstantiationDependent(), clang::Expr::isIntegerConstantExpr(), clang::isOpenMPCanonicalLoopNestTransformationDirective(), clang::isOpenMPDistributeDirective(), clang::isOpenMPGenericLoopDirective(), clang::isOpenMPLoopBoundSharingDirective(), clang::isOpenMPLoopTransformationDirective(), clang::isOpenMPTaskLoopDirective(), clang::isOpenMPWorksharingDirective(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::Sema::LangOpts, clang::Loop, clang::DynamicRecursiveASTVisitorBase< IsConst >::TraverseStmt(), clang::Update, clang::Expr::EvalResult::Val, and widenIterationCount().
Referenced by clang::SemaOpenMP::ActOnOpenMPDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPForDirective(), clang::SemaOpenMP::ActOnOpenMPForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTeamsGenericLoopDirective().
Definition at line 5129 of file SemaOpenMP.cpp.
References clang::cast(), clang::SemaBase::Diag(), OMPOrderClause::getKind(), OMPOrderClause::getKindKwLoc(), getOpenMPClauseNameForDiag(), and clang::getOpenMPSimpleClauseTypeName().
Referenced by clang::SemaOpenMP::ActOnOpenMPRegionEnd().
|
static |
Check if original variable is explicitly mapped but only bindings are used.
Returns true if an error was found.
Definition at line 4058 of file SemaOpenMP.cpp.
References clang::C, clang::SemaBase::Diag(), clang::VarDecl::getCanonicalDecl(), and clang::DeclRefExpr::getDecl().
Referenced by clang::SemaOpenMP::ActOnOpenMPTargetDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective().
|
static |
Validate prefer_type fr() and attr() arguments in an OMPInteropInfo.
fr() must be a string literal or constant integer expression. attr() must be a string literal starting with "ompx_" and containing no commas. Returns true if valid; emits diagnostic and returns false on first error.
Definition at line 8211 of file SemaOpenMP.cpp.
References clang::OMPInteropPref::Attrs, clang::Expr::containsUnexpandedParameterPack(), clang::SemaBase::Diag(), clang::OMPInteropPref::Fr, clang::SemaBase::getASTContext(), clang::Expr::getExprLoc(), clang::OMPInteropInfo::HasPreferAttrs, clang::isa(), clang::Expr::isInstantiationDependent(), clang::Expr::isIntegerConstantExpr(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), and clang::OMPInteropInfo::Prefs.
Referenced by clang::SemaOpenMP::ActOnOpenMPDeclareVariantDirective(), and clang::SemaOpenMP::ActOnOpenMPInitClause().
|
static |
Definition at line 3576 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::SemaBase::Diag(), getAllocatorKind(), clang::Decl::getAttr(), clang::Expr::getExprLoc(), clang::Sema::getPrintingPolicy(), clang::Stmt::getSourceRange(), clang::Decl::hasAttr(), clang::Expr::IgnoreParenImpCasts(), clang::Stmt::printPretty(), and clang::Stmt::Profile().
Referenced by clang::SemaOpenMP::ActOnOpenMPAllocateDirective(), and checkAllocateClauses().
Check consistency of the reduction clauses.
Definition at line 2901 of file SemaOpenMP.cpp.
References clang::C, clang::cast(), clang::SemaBase::Diag(), getCanonicalDecl(), getPrivateItem(), clang::isOpenMPParallelDirective(), clang::isOpenMPSimdDirective(), clang::isOpenMPWorksharingDirective(), and clang::OMPC_REDUCTION_unknown.
Definition at line 14406 of file SemaOpenMP.cpp.
References clang::C, clang::SemaBase::Diag(), clang::OMPClause::getBeginLoc(), and clang::OMPClause::getEndLoc().
Referenced by clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopDirective(), and clang::SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective().
|
static |
Definition at line 19722 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), getListOfPossibleValues(), getOpenMPClauseNameForDiag(), clang::SourceLocation::isValid(), clang::OMPC_SCHEDULE_MODIFIER_last, and clang::OMPC_SCHEDULE_MODIFIER_unknown.
Referenced by clang::SemaOpenMP::ActOnOpenMPScheduleClause().
|
static |
Definition at line 11453 of file SemaOpenMP.cpp.
References clang::C, clang::cast(), clang::SemaBase::Diag(), clang::Stmt::getBeginLoc(), clang::CapturedStmt::getCapturedStmt(), clang::Sema::getLangOpts(), clang::LangOptions::getOpenMPVersion(), and clang::isa().
Referenced by clang::SemaOpenMP::ActOnOpenMPParallelSectionsDirective(), and clang::SemaOpenMP::ActOnOpenMPSectionsDirective().
Definition at line 11326 of file SemaOpenMP.cpp.
References clang::cast(), clang::Expr::containsUnexpandedParameterPack(), clang::Sema::Context, clang::SemaBase::Diag(), clang::Expr::EvaluateAsInt(), clang::Expr::getExprLoc(), clang::APValue::getInt(), clang::OMPSafelenClause::getSafelen(), clang::OMPSimdlenClause::getSimdlen(), clang::Stmt::getSourceRange(), clang::Expr::isInstantiationDependent(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), and clang::Expr::EvalResult::Val.
Referenced by clang::SemaOpenMP::ActOnOpenMPDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective().
|
static |
Definition at line 23813 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::Sema::CurContext, clang::SemaBase::Diag(), clang::DeclContext::isDependentContext(), clang::QualType::isTriviallyCopyableType(), and clang::Sema::RequireCompleteType().
Referenced by checkValueDeclInTarget().
|
static |
Definition at line 26558 of file SemaOpenMP.cpp.
References checkTypeMappable(), and clang::ValueDecl::getType().
Referenced by clang::SemaOpenMP::checkDeclIsAllowedInOpenMPTarget().
|
static |
Collect the loop statements (ForStmt or CXXRangeForStmt) of the affected loop of a construct.
Definition at line 15702 of file SemaOpenMP.cpp.
Referenced by clang::SemaOpenMP::ActOnOpenMPFlattenDirective(), clang::SemaOpenMP::ActOnOpenMPInterchangeDirective(), clang::SemaOpenMP::ActOnOpenMPReverseDirective(), clang::SemaOpenMP::ActOnOpenMPSplitDirective(), clang::SemaOpenMP::ActOnOpenMPStripeDirective(), clang::SemaOpenMP::ActOnOpenMPTileDirective(), and clang::SemaOpenMP::ActOnOpenMPUnrollDirective().
|
static |
Definition at line 19098 of file SemaOpenMP.cpp.
References clang::Sema::DefaultLvalueConversion(), clang::ActionResult< PtrTy, Compress >::get(), and clang::ActionResult< PtrTy, Compress >::isInvalid().
Referenced by clang::SemaOpenMP::ActOnOpenMPTransparentClause().
|
static |
Definition at line 21475 of file SemaOpenMP.cpp.
References clang::cast(), clang::Set, and clang::T.
Referenced by buildDeclareReductionRef(), buildUserDefinedMapperRef(), and hasUserDefinedMapper().
Definition at line 21486 of file SemaOpenMP.cpp.
References clang::cast(), clang::LookupResult::isVisible(), and clang::Decl::redecls().
|
static |
Tries to find omp_allocator_handle_t type.
Definition at line 18719 of file SemaOpenMP.cpp.
References clang::QualType::addConst(), clang::Sema::BuildDeclRefExpr(), clang::SemaBase::Diag(), clang::ActionResult< PtrTy, Compress >::get(), clang::IdentifierTable::get(), clang::OpaquePtr< PtrTy >::get(), clang::OpaquePtr< PtrTy >::getAsOpaquePtr(), clang::Sema::getASTContext(), clang::Sema::getCurScope(), clang::Preprocessor::getIdentifierTable(), clang::QualType::getNonLValueExprType(), clang::ValueDecl::getType(), clang::Sema::getTypeName(), clang::ASTContext::Idents, clang::Initializing, clang::QualType::isNull(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::Sema::LookupAnyName, clang::Sema::LookupSingleName(), clang::Sema::PerformImplicitConversion(), clang::Sema::PP, clang::Sema::TUScope, and clang::VK_LValue.
Referenced by clang::SemaOpenMP::ActOnOpenMPAllocateClause(), clang::SemaOpenMP::ActOnOpenMPAllocatorClause(), and clang::SemaOpenMP::ActOnOpenMPUsesAllocatorClause().
|
static |
Tries to find omp_alloctrait_t type.
Definition at line 27372 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), clang::IdentifierTable::get(), clang::OpaquePtr< PtrTy >::get(), clang::OpaquePtr< PtrTy >::getAsOpaquePtr(), clang::Sema::getCurScope(), clang::Preprocessor::getIdentifierTable(), clang::Sema::getTypeName(), clang::QualType::isNull(), and clang::Sema::PP.
Referenced by clang::SemaOpenMP::ActOnOpenMPUsesAllocatorClause().
|
static |
Tries to find omp_depend_t. type.
Definition at line 23365 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), clang::IdentifierTable::get(), clang::OpaquePtr< PtrTy >::get(), clang::OpaquePtr< PtrTy >::getAsOpaquePtr(), clang::Sema::getCurScope(), clang::Preprocessor::getIdentifierTable(), clang::Sema::getTypeName(), clang::QualType::isNull(), and clang::Sema::PP.
Referenced by clang::SemaOpenMP::ActOnOpenMPDependClause(), and clang::SemaOpenMP::ActOnOpenMPDepobjClause().
|
static |
Tries to find omp_event_handle_t type.
Definition at line 26145 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), clang::IdentifierTable::get(), clang::OpaquePtr< PtrTy >::get(), clang::OpaquePtr< PtrTy >::getAsOpaquePtr(), clang::Sema::getCurScope(), clang::Preprocessor::getIdentifierTable(), clang::Sema::getTypeName(), clang::QualType::isNull(), and clang::Sema::PP.
Referenced by clang::SemaOpenMP::ActOnOpenMPDetachClause().
|
static |
Definition at line 3136 of file SemaOpenMP.cpp.
References clang::C, clang::cast(), clang::Sema::CurContext, FinishOpenMPLinearClause(), clang::Sema::getCurScope(), and clang::DeclContext::isDependentContext().
Referenced by clang::SemaOpenMP::ActOnOpenMPDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPForDirective(), clang::SemaOpenMP::ActOnOpenMPForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective().
|
static |
Definition at line 22959 of file SemaOpenMP.cpp.
References clang::Sema::ActOnFinishFullExpr(), clang::Sema::ActOnIntegerConstant(), clang::Sema::BuildBinOp(), buildCounterUpdate(), buildDeclRefExpr(), clang::cast(), clang::Sema::DefaultLvalueConversion(), clang::SemaBase::Diag(), clang::ActionResult< PtrTy, Compress >::get(), getPrivateItem(), clang::isa(), clang::isOpenMPDistributeDirective(), clang::isOpenMPSimdDirective(), clang::Update, and clang::Updates.
Referenced by finishLinearClauses().
Check if the given expression E is a constant integer that fits into Bits bits.
Definition at line 10468 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::Expr::getIntegerConstantExpr(), and clang::Signed.
Referenced by clang::SemaOpenMP::ActOnOpenMPFlattenDirective(), and checkOpenMPLoop().
|
static |
Definition at line 3551 of file SemaOpenMP.cpp.
References clang::Expr::containsUnexpandedParameterPack(), clang::Sema::getASTContext(), clang::Expr::IgnoreImpCasts(), clang::Expr::IgnoreParenImpCasts(), clang::Expr::isInstantiationDependent(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), and clang::Stmt::Profile().
Referenced by clang::SemaOpenMP::ActOnOpenMPAllocateDirective(), clang::SemaOpenMP::ActOnOpenMPUsesAllocatorClause(), checkAllocateClauses(), and checkPreviousOMPAllocateAttribute().
Definition at line 1302 of file SemaOpenMP.cpp.
References clang::cast(), clang::Decl::getCanonicalDecl(), and getExprAsWritten().
Referenced by getCanonicalDecl().
Definition at line 1311 of file SemaOpenMP.cpp.
References getCanonicalDecl().
Definition at line 11310 of file SemaOpenMP.cpp.
Referenced by clang::SemaOpenMP::ActOnOpenMPDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPForDirective(), clang::SemaOpenMP::ActOnOpenMPForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTeamsGenericLoopDirective().
Definition at line 11515 of file SemaOpenMP.cpp.
References clang::Expr::IgnoreImplicit(), and clang::Expr::IgnoreParenCasts().
Referenced by clang::SemaOpenMP::ActOnOpenMPDispatchDirective().
Definition at line 1283 of file SemaOpenMP.cpp.
References clang::Expr::IgnoreParens().
Referenced by getCanonicalDecl(), and getExprAsWritten().
Definition at line 1298 of file SemaOpenMP.cpp.
References getExprAsWritten().
|
static |
Like ASTContext::getIntTypeForBitwidth, but falls back to a _BitInt type when no standard integer type has the requested width.
Definition at line 5974 of file SemaOpenMP.cpp.
References clang::C, clang::QualType::isNull(), and clang::Signed.
Referenced by clang::SemaOpenMP::ActOnOpenMPCanonicalLoop().
|
static |
Definition at line 18493 of file SemaOpenMP.cpp.
References clang::First, and clang::Last.
Referenced by clang::SemaOpenMP::ActOnOpenMPAtClause(), clang::SemaOpenMP::ActOnOpenMPAtomicDefaultMemOrderClause(), clang::SemaOpenMP::ActOnOpenMPBindClause(), clang::SemaOpenMP::ActOnOpenMPDefaultClause(), clang::SemaOpenMP::ActOnOpenMPDependClause(), clang::SemaOpenMP::ActOnOpenMPDeviceClause(), clang::SemaOpenMP::ActOnOpenMPDynGroupprivateClause(), clang::SemaOpenMP::ActOnOpenMPGrainsizeClause(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPNumTasksClause(), clang::SemaOpenMP::ActOnOpenMPOrderClause(), clang::SemaOpenMP::ActOnOpenMPProcBindClause(), clang::SemaOpenMP::ActOnOpenMPReductionClause(), clang::SemaOpenMP::ActOnOpenMPScheduleClause(), clang::SemaOpenMP::ActOnOpenMPSeverityClause(), clang::SemaOpenMP::ActOnOpenMPThreadsetClause(), clang::SemaOpenMP::ActOnOpenMPUpdateDependObjectsClause(), and checkScheduleModifiers().
|
static |
Definition at line 4115 of file SemaOpenMP.cpp.
References clang::OMPC_DEFAULTMAP_MODIFIER_last, clang::OMPC_DEFAULTMAP_MODIFIER_unknown, and clang::OMPC_MAP_unknown.
|
static |
Definition at line 18223 of file SemaOpenMP.cpp.
References clang::getOpenMPCaptureRegions(), and clang::isOpenMPCapturingDirective().
Referenced by clang::SemaOpenMP::ActOnOpenMPDeviceClause(), clang::SemaOpenMP::ActOnOpenMPDistScheduleClause(), clang::SemaOpenMP::ActOnOpenMPDynGroupprivateClause(), clang::SemaOpenMP::ActOnOpenMPFilterClause(), clang::SemaOpenMP::ActOnOpenMPFinalClause(), clang::SemaOpenMP::ActOnOpenMPIfClause(), clang::SemaOpenMP::ActOnOpenMPMessageClause(), clang::SemaOpenMP::ActOnOpenMPNocontextClause(), clang::SemaOpenMP::ActOnOpenMPNovariantsClause(), clang::SemaOpenMP::ActOnOpenMPNumTeamsClause(), clang::SemaOpenMP::ActOnOpenMPNumThreadsClause(), clang::SemaOpenMP::ActOnOpenMPScheduleClause(), clang::SemaOpenMP::ActOnOpenMPThreadLimitClause(), clang::SemaOpenMP::ActOnOpenMPTransparentClause(), clang::SemaOpenMP::ActOnOpenMPXDynCGroupMemClause(), and isNonNegativeIntegerValue().
|
static |
Definition at line 1316 of file SemaOpenMP.cpp.
References clang::C.
Referenced by actOnOMPReductionKindClause(), clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPAtClause(), clang::SemaOpenMP::ActOnOpenMPAtomicDefaultMemOrderClause(), clang::SemaOpenMP::ActOnOpenMPAtomicDirective(), clang::SemaOpenMP::ActOnOpenMPBindClause(), clang::SemaOpenMP::ActOnOpenMPCopyinClause(), clang::SemaOpenMP::ActOnOpenMPCopyprivateClause(), clang::SemaOpenMP::ActOnOpenMPDeclareSimdDirective(), clang::SemaOpenMP::ActOnOpenMPDeclareVariantDirective(), clang::SemaOpenMP::ActOnOpenMPDefaultClause(), clang::SemaOpenMP::ActOnOpenMPDefaultmapClause(), clang::SemaOpenMP::ActOnOpenMPDependClause(), clang::SemaOpenMP::ActOnOpenMPDestroyClause(), clang::SemaOpenMP::ActOnOpenMPDetachClause(), clang::SemaOpenMP::ActOnOpenMPDeviceClause(), clang::SemaOpenMP::ActOnOpenMPDistScheduleClause(), clang::SemaOpenMP::ActOnOpenMPDoacrossClause(), clang::SemaOpenMP::ActOnOpenMPErrorDirective(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPFlushDirective(), clang::SemaOpenMP::ActOnOpenMPGrainsizeClause(), clang::SemaOpenMP::ActOnOpenMPHasDeviceAddrClause(), clang::SemaOpenMP::ActOnOpenMPIsDevicePtrClause(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPLinearClause(), clang::SemaOpenMP::ActOnOpenMPLoopInitialization(), clang::SemaOpenMP::ActOnOpenMPMessageClause(), clang::SemaOpenMP::ActOnOpenMPNontemporalClause(), clang::SemaOpenMP::ActOnOpenMPNumTasksClause(), clang::SemaOpenMP::ActOnOpenMPOrderClause(), clang::SemaOpenMP::ActOnOpenMPOrderedDirective(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::SemaOpenMP::ActOnOpenMPProcBindClause(), clang::SemaOpenMP::ActOnOpenMPReductionClause(), clang::SemaOpenMP::ActOnOpenMPRegionEnd(), clang::SemaOpenMP::ActOnOpenMPScheduleClause(), clang::SemaOpenMP::ActOnOpenMPSeverityClause(), clang::SemaOpenMP::ActOnOpenMPSharedClause(), clang::SemaOpenMP::ActOnOpenMPUpdateDependObjectsClause(), checkIfClauses(), checkMutuallyExclusiveClauses(), clang::SemaOpenMP::CheckOMPRequiresDecl(), checkOrderedOrderSpecified(), checkScheduleModifiers(), isNonNegativeIntegerValue(), rejectConstNotMutableType(), reportOriginalDsa(), and clang::SemaOpenMP::VerifyPositiveIntegerConstantInClause().
Definition at line 11318 of file SemaOpenMP.cpp.
Referenced by clang::SemaOpenMP::ActOnOpenMPForDirective(), clang::SemaOpenMP::ActOnOpenMPForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective().
|
static |
Definition at line 4784 of file SemaOpenMP.cpp.
References clang::Sema::getASTContext(), clang::QualType::withConst(), and clang::QualType::withRestrict().
Referenced by getTeamsRegionParams(), and processCapturedRegions().
|
static |
Definition at line 5721 of file SemaOpenMP.cpp.
References clang::ArraySubscript, clang::Expr::containsUnexpandedParameterPack(), clang::SemaBase::Diag(), clang::ArraySectionExpr::getBaseOriginalType(), getCanonicalDecl(), clang::Sema::getCurrentThisType(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::Stmt::getSourceRange(), clang::Expr::IgnoreParenImpCasts(), clang::Expr::IgnoreParens(), clang::isa(), clang::QualType::isNull(), clang::Expr::isTypeDependent(), and clang::Expr::isValueDependent().
Referenced by actOnOMPReductionKindClause(), clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPAllocateClause(), clang::SemaOpenMP::ActOnOpenMPCopyprivateClause(), clang::SemaOpenMP::ActOnOpenMPExclusiveClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPHasDeviceAddrClause(), clang::SemaOpenMP::ActOnOpenMPInclusiveClause(), clang::SemaOpenMP::ActOnOpenMPInteropDirective(), clang::SemaOpenMP::ActOnOpenMPIsDevicePtrClause(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPLinearClause(), clang::SemaOpenMP::ActOnOpenMPNontemporalClause(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::SemaOpenMP::ActOnOpenMPSharedClause(), clang::SemaOpenMP::ActOnOpenMPUseDeviceAddrClause(), clang::SemaOpenMP::ActOnOpenMPUseDevicePtrClause(), checkAllocateClauses(), checkGenericLoopLastprivate(), checkReductionClauses(), clang::SemaOpenMP::EndOpenMPDSABlock(), FinishOpenMPLinearClause(), getDistributeLastprivateVars(), getTeamsReductionVars(), isValidInteropVariable(), and ProcessOpenMPDoacrossClauseCommon().
|
static |
Definition at line 21853 of file SemaOpenMP.cpp.
Referenced by actOnOMPReductionKindClause().
|
static |
Definition at line 4835 of file SemaOpenMP.cpp.
References clang::Sema::getASTContext(), clang::QualType::withConst(), and clang::QualType::withRestrict().
Referenced by processCapturedRegions().
|
static |
Definition at line 4856 of file SemaOpenMP.cpp.
References clang::Sema::getASTContext(), clang::FunctionProtoType::ExtProtoInfo::Variadic, clang::QualType::withConst(), and clang::QualType::withRestrict().
Referenced by processCapturedRegions().
|
static |
Definition at line 4811 of file SemaOpenMP.cpp.
References clang::Sema::getASTContext(), clang::FunctionProtoType::ExtProtoInfo::Variadic, clang::QualType::withConst(), and clang::QualType::withRestrict().
Referenced by processCapturedRegions().
|
static |
Definition at line 4806 of file SemaOpenMP.cpp.
References getParallelRegionParams().
Referenced by processCapturedRegions().
|
static |
Definition at line 4848 of file SemaOpenMP.cpp.
Referenced by processCapturedRegions().
|
static |
Definition at line 2170 of file SemaOpenMP.cpp.
References clang::QualType::getNonReferenceType(), clang::ValueDecl::getType(), clang::Type::isAnyPointerType(), and clang::Type::isScalarType().
Referenced by clang::SemaOpenMP::isOpenMPCapturedByRef(), and clang::SemaOpenMP::setOpenMPCaptureKind().
|
static |
Definition at line 4766 of file SemaOpenMP.cpp.
References clang::isOpenMPParallelDirective(), clang::isOpenMPSimdDirective(), clang::isOpenMPTargetExecutionDirective(), clang::isOpenMPTeamsDirective(), and clang::isOpenMPWorksharingDirective().
Referenced by clang::SemaOpenMP::ActOnOpenMPRegionEnd(), and clang::SemaOpenMP::ActOnOpenMPRegionStart().
|
static |
Check for existence of a map clause in the list of clauses.
Definition at line 14221 of file SemaOpenMP.cpp.
References clang::C.
Referenced by clang::SemaOpenMP::ActOnOpenMPInteropDirective(), clang::SemaOpenMP::ActOnOpenMPTargetDataDirective(), clang::SemaOpenMP::ActOnOpenMPTargetEnterDataDirective(), clang::SemaOpenMP::ActOnOpenMPTargetExitDataDirective(), clang::SemaOpenMP::ActOnOpenMPTargetUpdateDirective(), and hasClauses().
|
static |
Definition at line 14228 of file SemaOpenMP.cpp.
References hasClauses().
Definition at line 4178 of file SemaOpenMP.cpp.
References hasNoMutableFields(), and clang::T.
Referenced by clang::SemaOpenMP::ActOnOpenMPMapClause().
|
static |
Definition at line 4164 of file SemaOpenMP.cpp.
References clang::RecordDecl::fields(), clang::Type::getAsArrayTypeUnsafe(), clang::Type::getAsCXXRecordDecl(), clang::ArrayType::getElementType(), clang::ValueDecl::getType(), hasNoMutableFields(), clang::Type::isArrayType(), and clang::FieldDecl::isMutable().
Referenced by hasConstQualifiedMappingType(), and hasNoMutableFields().
|
static |
Definition at line 24837 of file SemaOpenMP.cpp.
References clang::Sema::AR_inaccessible, argumentDependentLookup(), clang::LookupResult::begin(), clang::Sema::CheckBaseClassAccess(), clang::LookupResult::clear(), clang::Type::containsUnexpandedParameterPack(), clang::Sema::Context, clang::Sema::CurContext, clang::LookupResult::end(), filterLookupForUDReductionAndMapper(), clang::CXXBasePaths::front(), clang::Sema::getASTContext(), clang::ASTContext::getCanonicalType(), clang::Sema::getLangOpts(), clang::DeclarationNameInfo::getLoc(), clang::Scope::getParent(), clang::LookupResult::getRepresentativeDecl(), clang::ValueDecl::getType(), clang::QualType::getUnqualifiedType(), clang::ASTContext::hasSameType(), clang::CXXBasePaths::isAmbiguous(), clang::Scope::isDeclScope(), clang::DeclContext::isDependentContext(), clang::Type::isDependentType(), clang::Sema::IsDerivedFrom(), clang::Type::isInstantiationDependentType(), clang::Decl::isInvalidDecl(), clang::CXXScopeSpec::isSet(), clang::Sema::LookupOMPMapperName, clang::Sema::LookupParsedName(), and clang::LookupResult::suppressDiagnostics().
Referenced by isImplicitMapperNeeded().
Check if the variables in the mapping clause are externally visible.
Definition at line 14234 of file SemaOpenMP.cpp.
References clang::C.
Referenced by clang::SemaOpenMP::ActOnOpenMPTargetUpdateDirective().
|
static |
Definition at line 1760 of file SemaOpenMP.cpp.
References clang::CPlusPlus, clang::Type::getAsCXXRecordDecl(), clang::Sema::getASTContext(), clang::Sema::getLangOpts(), clang::CXXRecordDecl::hasDefinition(), and clang::CXXRecordDecl::hasMutableFields().
Referenced by isValidInteropVariable(), and rejectConstNotMutableType().
|
static |
Definition at line 24904 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::ASTContext::DeclarationNames, clang::RecordDecl::fields(), clang::IdentifierTable::get(), clang::Expr::getExprLoc(), clang::DeclarationNameTable::getIdentifier(), clang::ValueDecl::getType(), hasUserDefinedMapper(), clang::ASTContext::Idents, clang::QualType::isNull(), clang::Type::isStructureOrClassType(), clang::Type::isUnionType(), clang::DeclarationNameInfo::setLoc(), and clang::DeclarationNameInfo::setName().
|
static |
Definition at line 18452 of file SemaOpenMP.cpp.
References buildPreInits(), clang::Sema::Context, clang::Sema::CurContext, clang::SemaBase::Diag(), clang::Sema::FullExprArg::get(), clang::Expr::getExprLoc(), clang::Expr::getIntegerConstantExpr(), clang::Sema::getLangOpts(), getOpenMPCaptureRegionForClause(), getOpenMPClauseNameForDiag(), clang::LangOptions::getOpenMPVersion(), clang::Stmt::getSourceRange(), clang::DeclContext::isDependentContext(), clang::Expr::isInstantiationDependent(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), clang::Sema::MakeFullExpr(), clang::Sema::OpenMP(), and clang::SemaOpenMP::PerformOpenMPImplicitIntegerConversion().
Referenced by clang::SemaOpenMP::ActOnOpenMPDeviceClause(), clang::SemaOpenMP::ActOnOpenMPDynGroupprivateClause(), clang::SemaOpenMP::ActOnOpenMPGrainsizeClause(), clang::SemaOpenMP::ActOnOpenMPNumTasksClause(), clang::SemaOpenMP::ActOnOpenMPNumTeamsClause(), clang::SemaOpenMP::ActOnOpenMPNumThreadsClause(), clang::SemaOpenMP::ActOnOpenMPPriorityClause(), clang::SemaOpenMP::ActOnOpenMPSizesClause(), clang::SemaOpenMP::ActOnOpenMPThreadLimitClause(), clang::SemaOpenMP::ActOnOpenMPTransparentClause(), and clang::SemaOpenMP::ActOnOpenMPXDynCGroupMemClause().
Definition at line 2089 of file SemaOpenMP.cpp.
References clang::SemaOpenMP::isInOpenMPTargetExecutionDirective(), clang::Sema::LangOpts, and clang::Sema::OpenMP().
Referenced by clang::SemaOpenMP::diagIfOpenMPDeviceCode().
|
static |
Definition at line 20221 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::SemaBase::Diag(), clang::IdentifierTable::get(), clang::Sema::getCurScope(), getPrivateItem(), clang::Expr::getType(), clang::QualType::getUnqualifiedType(), clang::ASTContext::hasSameType(), clang::ASTContext::Idents, isConstNotMutableType(), clang::Sema::LookupName(), clang::Sema::LookupOrdinaryName, and clang::Result.
Referenced by clang::SemaOpenMP::ActOnOpenMPDestroyClause(), clang::SemaOpenMP::ActOnOpenMPInitClause(), and clang::SemaOpenMP::ActOnOpenMPUseClause().
|
static |
Build and return a DeclRefExpr for the floor induction variable using the SemaRef and the provided parameters.
Definition at line 15717 of file SemaOpenMP.cpp.
References buildDeclRefExpr(), and clang::Expr::getExprLoc().
Referenced by clang::SemaOpenMP::ActOnOpenMPStripeDirective(), and clang::SemaOpenMP::ActOnOpenMPTileDirective().
|
static |
Definition at line 5982 of file SemaOpenMP.cpp.
References clang::Sema::ActOnDeclStmt(), clang::Sema::AddInitializerToDecl(), clang::AssertSuccess(), buildVarDecl(), clang::cast(), clang::Sema::ConvertDeclToDeclGroup(), clang::Expr::getType(), and clang::Expr::IgnoreImplicit().
Referenced by buildDistanceFunc().
|
static |
Definition at line 4889 of file SemaOpenMP.cpp.
References clang::Sema::ActOnCapturedRegionStart(), clang::CR_OpenMP, clang::Sema::getASTContext(), clang::Sema::getCurCapturedRegion(), clang::getOpenMPCaptureRegions(), getParallelRegionParams(), getTargetRegionParams(), getTaskloopRegionParams(), getTaskRegionParams(), getTeamsRegionParams(), getUnknownRegionParams(), and clang::isOpenMPLoopBoundSharingDirective().
Referenced by clang::SemaOpenMP::ActOnOpenMPRegionStart().
|
static |
Perform DFS through the structure/class data members trying to find member(s) with user-defined 'default' mapper and generate implicit map clauses for such members with the found 'default' mapper.
Definition at line 6391 of file SemaOpenMP.cpp.
References clang::SemaOpenMP::ActOnOpenMPMapClause(), clang::Sema::BuildMemberExpr(), buildUserDefinedMapperRef(), clang::C, clang::cast(), clang::Expr::containsUnexpandedParameterPack(), clang::Sema::Context, clang::ASTContext::DeclarationNames, clang::Sema::DefaultLvalueConversion(), clang::RecordDecl::fields(), clang::ActionResult< PtrTy, Compress >::get(), clang::IdentifierTable::get(), clang::Decl::getAccess(), clang::ArraySectionExpr::getBaseOriginalType(), clang::QualType::getCanonicalType(), clang::Expr::getExprLoc(), clang::DeclarationNameTable::getIdentifier(), clang::Sema::getLangOpts(), clang::Type::getPointeeType(), clang::Expr::getType(), clang::ValueDecl::getType(), clang::ASTContext::Idents, clang::Expr::IgnoreParenImpCasts(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::QualType::isNull(), clang::Type::isSpecificBuiltinType(), clang::Type::isStructureOrClassType(), clang::Expr::isTypeDependent(), clang::Type::isUnionType(), clang::Expr::isValueDependent(), clang::DeclAccessPair::make(), clang::OK_Ordinary, clang::Sema::OpenMP(), clang::OpaqueValueExpr::setIsUnique(), clang::DeclarationNameInfo::setLoc(), clang::DeclarationNameInfo::setName(), and clang::VK_LValue.
Referenced by clang::SemaOpenMP::ActOnOpenMPDeclareMapperDirective(), and clang::SemaOpenMP::ActOnOpenMPExecutableDirective().
|
static |
Definition at line 23423 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::Sema::CurContext, clang::SemaBase::Diag(), clang::BinaryOperator::getOverloadedOperator(), getPrivateItem(), clang::Expr::IgnoreParenImpCasts(), clang::isa(), clang::DeclContext::isDependentContext(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::OO_None, clang::Sema::OpenMP(), clang::SimpleExpr, and clang::SemaOpenMP::VerifyPositiveIntegerConstantInClause().
Referenced by clang::SemaOpenMP::ActOnOpenMPDependClause(), and clang::SemaOpenMP::ActOnOpenMPDoacrossClause().
|
static |
Definition at line 1779 of file SemaOpenMP.cpp.
References clang::VarDecl::DeclarationOnly, clang::SemaBase::Diag(), Diag(), clang::Sema::getASTContext(), clang::Decl::getLocation(), getOpenMPClauseNameForDiag(), isConstNotMutableType(), and clang::VarDecl::isThisDeclarationADefinition().
Referenced by actOnOMPReductionKindClause(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), and clang::SemaOpenMP::CheckOpenMPLinearDecl().
|
static |
Definition at line 3850 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), clang::Sema::getASTContext(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), getOpenMPClauseNameForDiag(), clang::LangOptions::getOpenMPVersion(), clang::ValueDecl::getType(), clang::QualType::isConstant(), clang::VarDecl::isFileVarDecl(), clang::VarDecl::isLocalVarDecl(), clang::isOpenMPTaskingDirective(), clang::VarDecl::isStaticDataMember(), clang::VarDecl::isStaticLocal(), and clang::SourceLocation::isValid().
Referenced by actOnOMPReductionKindClause(), clang::SemaOpenMP::ActOnOpenMPCopyprivateClause(), clang::SemaOpenMP::ActOnOpenMPDetachClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPHasDeviceAddrClause(), clang::SemaOpenMP::ActOnOpenMPIsDevicePtrClause(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPLinearClause(), clang::SemaOpenMP::ActOnOpenMPLoopInitialization(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::SemaOpenMP::ActOnOpenMPSharedClause(), clang::SemaOpenMP::checkDeclIsAllowedInOpenMPTarget(), and clang::SemaOpenMP::EndOpenMPDSABlock().
|
static |
Definition at line 8350 of file SemaOpenMP.cpp.
References clang::cast(), clang::CapturedStmt::getCapturedDecl(), clang::CapturedStmt::getCapturedStmt(), clang::SemaOpenMP::getOpenMPCaptureLevels(), clang::Sema::OpenMP(), clang::Sema::setFunctionHasBranchProtectedScope(), and clang::CapturedDecl::setNothrow().
Referenced by clang::SemaOpenMP::ActOnOpenMPDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMaskedTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopDirective(), clang::SemaOpenMP::ActOnOpenMPParallelMasterTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetDirective(), clang::SemaOpenMP::ActOnOpenMPTargetEnterDataDirective(), clang::SemaOpenMP::ActOnOpenMPTargetExitDataDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetUpdateDirective(), clang::SemaOpenMP::ActOnOpenMPTaskDirective(), clang::SemaOpenMP::ActOnOpenMPTaskLoopSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTeamsGenericLoopDirective().
|
static |
Definition at line 7596 of file SemaOpenMP.cpp.
References clang::ParmVarDecl::Create(), clang::Sema::getASTContext(), clang::ValueDecl::getType(), clang::Type::isFunctionNoProtoType(), clang::Type::isFunctionProtoType(), clang::FunctionDecl::parameters(), clang::SC_None, and clang::ValueDecl::setType().
Referenced by clang::SemaOpenMP::checkOpenMPDeclareVariantFunction().
Definition at line 6587 of file SemaOpenMP.cpp.
Referenced by clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective().
|
static |
Updates OriginalInits by checking Transform against loop transformation directives and appending their pre-inits if a match is found.
Definition at line 15338 of file SemaOpenMP.cpp.
References OMPLoopTransformationDirective::getDirective(), and clang::Stmt::getStmtClass().
|
static |
Check the number of expressions specified in a multidimensional clause and return whether an error was encountered.
Definition at line 11675 of file SemaOpenMP.cpp.
References validateMultidimClauseExprs().
|
static |
Check the number of expressions specified in a multidimensional clause and return whether an error was encountered.
Definition at line 11630 of file SemaOpenMP.cpp.
References clang::SemaBase::Diag(), clang::Expr::EvaluateKnownConstInt(), clang::SemaBase::getASTContext(), and clang::Expr::isInstantiationDependent().
Referenced by clang::SemaOpenMP::ActOnOpenMPNumThreadsClause(), validateMultidimClauseExprs(), and validateMultidimClauses().
|
static |
Check the number of expressions specified in clauses that can contain multidimensional values, e.g., num_teams and thread_limit.
The function returns true on error.
Definition at line 11688 of file SemaOpenMP.cpp.
References clang::cast(), clang::SemaBase::Diag(), and validateMultidimClauseExprs().
Referenced by clang::SemaOpenMP::ActOnOpenMPTargetDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetParallelGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTargetSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTargetTeamsGenericLoopDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), clang::SemaOpenMP::ActOnOpenMPTeamsDistributeSimdDirective(), and clang::SemaOpenMP::ActOnOpenMPTeamsGenericLoopDirective().
|
static |
Convert integer expression E to make it have at least Bits bits.
Definition at line 10452 of file SemaOpenMP.cpp.
References clang::C, clang::Sema::Context, clang::Converting, clang::ExprError(), clang::Expr::getType(), and clang::Sema::PerformImplicitConversion().
Referenced by clang::SemaOpenMP::ActOnOpenMPFlattenDirective(), and checkOpenMPLoop().