clang
6.0.0
|
This file implements semantic analysis for OpenMP directives and clauses. More...
#include "TreeTransform.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTMutationListener.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclOpenMP.h"
#include "clang/AST/StmtCXX.h"
#include "clang/AST/StmtOpenMP.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/Basic/OpenMPKinds.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/Scope.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/SemaInternal.h"
#include "llvm/ADT/PointerEmbeddedInt.h"
Go to the source code of this file.
Macros | |
#define | DSAStack static_cast<DSAStackTy *>(VarDataSharingAttributesStack) |
Enumerations | |
enum | DefaultDataSharingAttributes |
Default data sharing attributes, which can be applied to directive. More... | |
enum | DefaultMapAttributes |
Attributes of the defaultmap clause. More... | |
Functions | |
static Expr * | CheckMapClauseExpressionBase (Sema &SemaRef, Expr *E, OMPClauseMappableExprCommon::MappableExprComponentList &CurComponents, OpenMPClauseKind CKind, bool NoDiagnose) |
static Expr * | getExprAsWritten (Expr *E) |
static ValueDecl * | getCanonicalDecl (ValueDecl *D) |
static VarDecl * | buildVarDecl (Sema &SemaRef, SourceLocation Loc, QualType Type, StringRef Name, const AttrVec *Attrs=nullptr) |
Build a variable declaration for OpenMP loop iteration variable. More... | |
static DeclRefExpr * | buildDeclRefExpr (Sema &S, VarDecl *D, QualType Ty, SourceLocation Loc, bool RefersToCapture=false) |
static bool | FinishOpenMPLinearClause (OMPLinearClause &Clause, DeclRefExpr *IV, Expr *NumIterations, Sema &SemaRef, Scope *S, DSAStackTy *Stack) |
static void | ReportOriginalDSA (Sema &SemaRef, DSAStackTy *Stack, const ValueDecl *D, DSAStackTy::DSAVarData DVar, bool IsLoopIterVar=false) |
static OMPCapturedExprDecl * | buildCaptureDecl (Sema &S, IdentifierInfo *Id, Expr *CaptureExpr, bool WithInit, bool AsExpression) |
static DeclRefExpr * | buildCapture (Sema &S, ValueDecl *D, Expr *CaptureExpr, bool WithInit) |
static ExprResult | buildCapture (Sema &S, Expr *CaptureExpr, DeclRefExpr *&Ref) |
static bool | checkCancelRegion (Sema &SemaRef, OpenMPDirectiveKind CurrentRegion, OpenMPDirectiveKind CancelRegion, SourceLocation StartLoc) |
static bool | checkNestingOfRegions (Sema &SemaRef, DSAStackTy *Stack, OpenMPDirectiveKind CurrentRegion, const DeclarationNameInfo &CurrentName, OpenMPDirectiveKind CancelRegion, SourceLocation StartLoc) |
static bool | checkIfClauses (Sema &S, OpenMPDirectiveKind Kind, ArrayRef< OMPClause *> Clauses, ArrayRef< OpenMPDirectiveKind > AllowedNameModifiers) |
static bool | CheckOpenMPIterationSpace (OpenMPDirectiveKind DKind, Stmt *S, Sema &SemaRef, DSAStackTy &DSA, unsigned CurrentNestedLoopCount, unsigned NestedLoopCount, Expr *CollapseLoopCountExpr, Expr *OrderedLoopCountExpr, llvm::DenseMap< ValueDecl *, Expr *> &VarsWithImplicitDSA, LoopIterationSpace &ResultIterSpace, llvm::MapVector< Expr *, DeclRefExpr *> &Captures) |
Called on a for stmt to check and extract its iteration space for further processing (such as collapsing). More... | |
static ExprResult | BuildCounterInit (Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef, ExprResult Start, llvm::MapVector< Expr *, DeclRefExpr *> &Captures) |
Build 'VarRef = Start. More... | |
static ExprResult | BuildCounterUpdate (Sema &SemaRef, Scope *S, SourceLocation Loc, ExprResult VarRef, ExprResult Start, ExprResult Iter, ExprResult Step, bool Subtract, llvm::MapVector< Expr *, DeclRefExpr *> *Captures=nullptr) |
Build 'VarRef = Start + Iter * Step'. More... | |
static ExprResult | WidenIterationCount (unsigned Bits, Expr *E, Sema &SemaRef) |
Convert integer expression E to make it have at least Bits bits. More... | |
static bool | FitsInto (unsigned Bits, bool Signed, Expr *E, Sema &SemaRef) |
Check if the given expression E is a constant integer that fits into Bits bits. More... | |
static Stmt * | buildPreInits (ASTContext &Context, MutableArrayRef< Decl *> PreInits) |
Build preinits statement for the given declarations. More... | |
static Stmt * | buildPreInits (ASTContext &Context, const llvm::MapVector< Expr *, DeclRefExpr *> &Captures) |
Build preinits statement for the given declarations. More... | |
static Expr * | buildPostUpdate (Sema &S, ArrayRef< Expr *> PostUpdates) |
Build postupdate expression for the given list of postupdates expressions. More... | |
static unsigned | CheckOpenMPLoop (OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr, Expr *OrderedLoopCountExpr, Stmt *AStmt, Sema &SemaRef, DSAStackTy &DSA, llvm::DenseMap< ValueDecl *, Expr *> &VarsWithImplicitDSA, OMPLoopDirective::HelperExprs &Built) |
Called on a for stmt to check itself and nested loops (if any). More... | |
static Expr * | getCollapseNumberExpr (ArrayRef< OMPClause *> Clauses) |
static Expr * | getOrderedNumberExpr (ArrayRef< OMPClause *> Clauses) |
static bool | checkSimdlenSafelenSpecified (Sema &S, const ArrayRef< OMPClause *> Clauses) |
static bool | hasClauses (ArrayRef< OMPClause *> Clauses, const OpenMPClauseKind K) |
Check for existence of a map clause in the list of clauses. More... | |
template<typename... Params> | |
static bool | hasClauses (ArrayRef< OMPClause *> Clauses, const OpenMPClauseKind K, const Params... ClauseTypes) |
static bool | checkGrainsizeNumTasksClauses (Sema &S, ArrayRef< OMPClause *> Clauses) |
static bool | checkReductionClauseWithNogroup (Sema &S, ArrayRef< OMPClause *> Clauses) |
static OpenMPDirectiveKind | getOpenMPCaptureRegionForClause (OpenMPDirectiveKind DKind, OpenMPClauseKind CKind, OpenMPDirectiveKind NameModifier=OMPD_unknown) |
static bool | IsNonNegativeIntegerValue (Expr *&ValExpr, Sema &SemaRef, OpenMPClauseKind CKind, bool StrictlyPositive) |
static std::string | getListOfPossibleValues (OpenMPClauseKind K, unsigned First, unsigned Last, ArrayRef< unsigned > Exclude=llvm::None) |
static bool | checkScheduleModifiers (Sema &S, OpenMPScheduleClauseModifier M1, OpenMPScheduleClauseModifier M2, SourceLocation M1Loc, SourceLocation M2Loc) |
static std::pair< ValueDecl *, bool > | getPrivateItem (Sema &S, Expr *&RefExpr, SourceLocation &ELoc, SourceRange &ERange, bool AllowArraySection=false) |
template<typename T > | |
static T | filterLookupForUDR (SmallVectorImpl< UnresolvedSet< 8 >> &Lookups, const llvm::function_ref< T(ValueDecl *)> &Gen) |
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 OMPArraySectionExpr *OASE, bool &SingleElement, SmallVectorImpl< llvm::APSInt > &ArraySizes) |
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 | CheckTypeMappable (SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, QualType QTy) |
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. More... | |
static bool | CheckArrayExpressionDoesNotReferToUnitySize (Sema &SemaRef, const Expr *E, QualType BaseQTy) |
static bool | CheckMapConflicts (Sema &SemaRef, DSAStackTy *DSAS, ValueDecl *VD, Expr *E, bool CurrentRegionOnly, OMPClauseMappableExprCommon::MappableExprComponentListRef CurComponents, OpenMPClauseKind CKind) |
static void | checkMappableExpressionList (Sema &SemaRef, DSAStackTy *DSAS, OpenMPClauseKind CKind, MappableVarListInfo &MVLI, SourceLocation StartLoc, OpenMPMapClauseKind MapType=OMPC_MAP_unknown, bool IsMapTypeImplicit=false) |
static void | checkDeclInTargetContext (SourceLocation SL, SourceRange SR, Sema &SemaRef, Decl *D) |
static bool | checkValueDeclInTarget (SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, ValueDecl *VD) |
This file implements semantic analysis for OpenMP directives and clauses.
Definition in file SemaOpenMP.cpp.
#define DSAStack static_cast<DSAStackTy *>(VarDataSharingAttributesStack) |
Definition at line 1159 of file SemaOpenMP.cpp.
Referenced by clang::Sema::ActOnOpenMPCancelDirective(), clang::Sema::ActOnOpenMPCancellationPointDirective(), clang::Sema::ActOnOpenMPCopyinClause(), clang::Sema::ActOnOpenMPCopyprivateClause(), clang::Sema::ActOnOpenMPDefaultClause(), clang::Sema::ActOnOpenMPDefaultmapClause(), clang::Sema::ActOnOpenMPDependClause(), clang::Sema::ActOnOpenMPDeviceClause(), clang::Sema::ActOnOpenMPDistributeDirective(), clang::Sema::ActOnOpenMPDistributeParallelForDirective(), clang::Sema::ActOnOpenMPDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPDistributeSimdDirective(), clang::Sema::ActOnOpenMPExecutableDirective(), clang::Sema::ActOnOpenMPFirstprivateClause(), clang::Sema::ActOnOpenMPForDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPFromClause(), clang::Sema::ActOnOpenMPIfClause(), clang::Sema::ActOnOpenMPInReductionClause(), clang::Sema::ActOnOpenMPIsDevicePtrClause(), clang::Sema::ActOnOpenMPLastprivateClause(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPLoopInitialization(), clang::Sema::ActOnOpenMPMapClause(), clang::Sema::ActOnOpenMPNowaitClause(), clang::Sema::ActOnOpenMPNumTeamsClause(), clang::Sema::ActOnOpenMPNumThreadsClause(), clang::Sema::ActOnOpenMPOrderedClause(), clang::Sema::ActOnOpenMPOrderedDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPParallelSectionsDirective(), clang::Sema::ActOnOpenMPPrivateClause(), clang::Sema::ActOnOpenMPReductionClause(), clang::Sema::ActOnOpenMPRegionEnd(), clang::Sema::ActOnOpenMPSectionDirective(), clang::Sema::ActOnOpenMPSectionsDirective(), clang::Sema::ActOnOpenMPSharedClause(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPTargetDirective(), clang::Sema::ActOnOpenMPTargetParallelForDirective(), clang::Sema::ActOnOpenMPTargetParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::Sema::ActOnOpenMPTaskLoopDirective(), clang::Sema::ActOnOpenMPTaskLoopSimdDirective(), clang::Sema::ActOnOpenMPTaskReductionClause(), clang::Sema::ActOnOpenMPTeamsDirective(), clang::Sema::ActOnOpenMPTeamsDistributeDirective(), clang::Sema::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::Sema::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPTeamsDistributeSimdDirective(), clang::Sema::ActOnOpenMPThreadLimitClause(), clang::Sema::ActOnOpenMPToClause(), clang::Sema::ActOnOpenMPUseDevicePtrClause(), clang::Sema::checkDeclIsAllowedInOpenMPTarget(), clang::Sema::EndOpenMPClause(), clang::Sema::EndOpenMPDSABlock(), clang::Sema::isInOpenMPTargetExecutionDirective(), clang::Sema::IsOpenMPCapturedByRef(), clang::Sema::IsOpenMPCapturedDecl(), clang::Sema::isOpenMPPrivateDecl(), clang::Sema::isOpenMPTargetCapturedDecl(), clang::Sema::StartOpenMPClause(), and clang::Sema::StartOpenMPDSABlock().
Default data sharing attributes, which can be applied to directive.
Definition at line 45 of file SemaOpenMP.cpp.
enum DefaultMapAttributes |
Attributes of the defaultmap clause.
Definition at line 52 of file SemaOpenMP.cpp.
|
static |
Definition at line 9921 of file SemaOpenMP.cpp.
References clang::DeclarationName::getCXXOverloadedOperator(), and clang::DeclarationNameInfo::getName().
Referenced by clang::Sema::ActOnOpenMPInReductionClause(), clang::Sema::ActOnOpenMPReductionClause(), and clang::Sema::ActOnOpenMPTaskReductionClause().
|
static |
Definition at line 2352 of file SemaOpenMP.cpp.
References buildCaptureDecl(), buildDeclRefExpr(), clang::Expr::getExprLoc(), clang::NamedDecl::getIdentifier(), clang::QualType::getNonReferenceType(), clang::ValueDecl::getType(), and clang::Sema::IsOpenMPCapturedDecl().
Referenced by clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPLoopInitialization(), clang::Sema::ActOnOpenMPSharedClause(), and clang::Sema::ActOnOpenMPUseDevicePtrClause().
|
static |
Definition at line 2365 of file SemaOpenMP.cpp.
References buildCaptureDecl(), buildDeclRefExpr(), clang::Sema::CreateBuiltinUnaryOp(), clang::Sema::DefaultLvalueConversion(), clang::ExprError(), clang::ActionResult< PtrTy, CompressInvalid >::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(), and clang::OK_Ordinary.
|
static |
Definition at line 2323 of file SemaOpenMP.cpp.
References clang::Decl::addAttr(), clang::DeclContext::addHiddenDecl(), clang::Sema::AddInitializerToDecl(), clang::C, clang::OMPCapturedExprDecl::Create(), clang::Sema::CreateBuiltinUnaryOp(), clang::Sema::CurContext, clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Sema::getASTContext(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), clang::Stmt::getLocStart(), clang::ASTContext::getLValueReferenceType(), clang::Expr::getObjectKind(), clang::ASTContext::getPointerType(), clang::Expr::getType(), clang::Expr::IgnoreImpCasts(), clang::Expr::isGLValue(), clang::ActionResult< PtrTy, CompressInvalid >::isUsable(), and clang::OK_Ordinary.
Referenced by buildCapture().
|
static |
Build 'VarRef = Start.
Definition at line 4288 of file SemaOpenMP.cpp.
References clang::Sema::AA_Converting, clang::Sema::BuildBinOp(), clang::Sema::Context, clang::ExprError(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::ASTContext::hasSameType(), and clang::Sema::PerformImplicitConversion().
Referenced by CheckOpenMPLoop().
|
static |
Build 'VarRef = Start + Iter * Step'.
Definition at line 4311 of file SemaOpenMP.cpp.
References clang::Sema::AA_Converting, clang::Sema::ActOnParenExpr(), clang::Sema::BuildBinOp(), clang::Sema::Context, clang::Sema::CreateBuiltinBinOp(), clang::ExprError(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Sema::getDiagnostics(), clang::DiagnosticsEngine::getSuppressAllDiagnostics(), clang::ASTContext::hasSameType(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::ActionResult< PtrTy, CompressInvalid >::isUsable(), clang::Sema::PerformImplicitConversion(), clang::DiagnosticsEngine::setSuppressAllDiagnostics(), Step, and clang::diff::Update.
Referenced by CheckOpenMPLoop(), and FinishOpenMPLinearClause().
|
static |
Definition at line 9714 of file SemaOpenMP.cpp.
References clang::UnresolvedSetImpl::addDecl(), clang::UnresolvedSetImpl::append(), clang::Sema::AR_inaccessible, clang::UnresolvedSetImpl::begin(), clang::LookupResult::begin(), clang::Sema::BuildBasePathArray(), clang::Sema::BuildDeclRefExpr(), clang::Sema::CheckBaseClassAccess(), clang::LookupResult::clear(), clang::Type::containsUnexpandedParameterPack(), clang::Sema::Context, clang::UnresolvedLookupExpr::Create(), clang::Sema::CurContext, clang::Sema::Diag(), clang::UnresolvedSetImpl::end(), clang::LookupResult::end(), clang::ExprEmpty(), clang::ExprError(), clang::CXXBasePaths::front(), clang::ASTContext::getCanonicalType(), clang::Scope::getParent(), clang::LookupResult::getRepresentativeDecl(), clang::ValueDecl::getType(), clang::CXXScopeSpec::getWithLocInContext(), clang::ASTContext::hasSameType(), clang::CXXBasePaths::isAmbiguous(), 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::CXXScopeSpec::isSet(), clang::Sema::LookupOMPReductionName, clang::Sema::LookupParsedName(), Privates, clang::LookupResult::suppressDiagnostics(), and clang::VK_LValue.
|
static |
Definition at line 821 of file SemaOpenMP.cpp.
Referenced by clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPUseDevicePtrClause(), buildCapture(), CheckOpenMPLoop(), clang::Sema::EndOpenMPDSABlock(), and FinishOpenMPLinearClause().
Build postupdate expression for the given list of postupdates expressions.
Definition at line 4433 of file SemaOpenMP.cpp.
References clang::Sema::BuildCStyleCastExpr(), clang::Sema::Context, clang::Expr::getExprLoc(), clang::ASTContext::getTrivialTypeSourceInfo(), and clang::ASTContext::VoidTy.
|
static |
Build preinits statement for the given declarations.
Definition at line 4409 of file SemaOpenMP.cpp.
Referenced by clang::Sema::ActOnOpenMPDeviceClause(), clang::Sema::ActOnOpenMPIfClause(), clang::Sema::ActOnOpenMPNumTeamsClause(), clang::Sema::ActOnOpenMPNumThreadsClause(), clang::Sema::ActOnOpenMPThreadLimitClause(), and CheckOpenMPLoop().
|
static |
Build preinits statement for the given declarations.
Definition at line 4421 of file SemaOpenMP.cpp.
|
static |
Build a variable declaration for OpenMP loop iteration variable.
Definition at line 805 of file SemaOpenMP.cpp.
Referenced by clang::Sema::ActOnOpenMPDeclareReductionCombinerStart(), clang::Sema::ActOnOpenMPDeclareReductionInitializerStart(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPUseDevicePtrClause(), CheckOpenMPLoop(), and clang::Sema::EndOpenMPDSABlock().
|
static |
Definition at line 11451 of file SemaOpenMP.cpp.
Referenced by CheckMapClauseExpressionBase().
|
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 11397 of file SemaOpenMP.cpp.
Referenced by CheckMapClauseExpressionBase(), and CheckMapConflicts().
|
static |
Definition at line 2529 of file SemaOpenMP.cpp.
References clang::Sema::Diag(), and clang::getOpenMPDirectiveName().
Referenced by clang::Sema::ActOnOpenMPExecutableDirective().
|
static |
Definition at line 12652 of file SemaOpenMP.cpp.
References clang::Decl::addAttr(), clang::Sema::Context, clang::Sema::Diag(), clang::ASTContext::getASTMutationListener(), clang::Decl::getDeclContext(), getDefinition(), clang::Decl::getLocation(), clang::DeclContext::getParent(), clang::Decl::hasAttr(), and clang::Decl::isOutOfLine().
Definition at line 6636 of file SemaOpenMP.cpp.
References clang::C, clang::Sema::Diag(), clang::OMPClause::getClauseKind(), clang::OMPClause::getLocStart(), and clang::getOpenMPClauseName().
Referenced by clang::Sema::ActOnOpenMPTaskLoopDirective(), and clang::Sema::ActOnOpenMPTaskLoopSimdDirective().
|
static |
Definition at line 2760 of file SemaOpenMP.cpp.
References clang::C, clang::Sema::Diag(), End, clang::getOpenMPClauseName(), clang::getOpenMPDirectiveName(), and clang::OMPD_unknown.
|
static |
Definition at line 11486 of file SemaOpenMP.cpp.
References CheckArrayExpressionDoesNotReferToUnitySize(), CheckArrayExpressionDoesNotReferToWholeSize(), clang::Sema::Diag(), clang::Type::getAs(), clang::OMPArraySectionExpr::getBaseOriginalType(), clang::QualType::getCanonicalType(), clang::Expr::getExprLoc(), clang::getOpenMPClauseName(), clang::Type::getPointeeType(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::Expr::IgnoreParenImpCasts(), clang::Type::isAnyPointerType(), clang::Type::isArrayType(), and clang::Type::isReferenceType().
Referenced by checkMappableExpressionList().
|
static |
Definition at line 11701 of file SemaOpenMP.cpp.
References CheckArrayExpressionDoesNotReferToWholeSize(), clang::Sema::Diag(), clang::OMPArraySectionExpr::getBaseOriginalType(), clang::QualType::getCanonicalType(), clang::Expr::getExprLoc(), clang::QualType::getNonReferenceType(), clang::Stmt::getSourceRange(), clang::Expr::IgnoreParenImpCasts(), clang::Type::isAnyPointerType(), and clang::QualType::isNull().
Referenced by checkMappableExpressionList().
|
static |
Definition at line 11940 of file SemaOpenMP.cpp.
References CheckMapClauseExpressionBase(), CheckMapConflicts(), CheckTypeMappable(), clang::Sema::Diag(), clang::getOpenMPClauseName(), clang::getOpenMPDirectiveName(), clang::getOpenMPSimpleClauseTypeName(), clang::isOpenMPPrivate(), and ReportOriginalDSA().
Referenced by clang::Sema::ActOnOpenMPFromClause(), clang::Sema::ActOnOpenMPMapClause(), and clang::Sema::ActOnOpenMPToClause().
|
static |
Definition at line 2545 of file SemaOpenMP.cpp.
References clang::Sema::Diag(), clang::DeclarationNameInfo::getName(), clang::getOpenMPDirectiveName(), clang::isOpenMPDistributeDirective(), clang::isOpenMPNestingDistributeDirective(), clang::isOpenMPNestingTeamsDirective(), clang::isOpenMPParallelDirective(), clang::isOpenMPSimdDirective(), clang::isOpenMPTargetDataManagementDirective(), clang::isOpenMPTargetExecutionDirective(), clang::isOpenMPTaskingDirective(), clang::isOpenMPTeamsDirective(), clang::isOpenMPWorksharingDirective(), clang::SourceLocation::isValid(), and clang::OMPD_unknown.
Referenced by clang::Sema::ActOnOpenMPExecutableDirective().
|
static |
Definition at line 9859 of file SemaOpenMP.cpp.
|
static |
Called on a for stmt to check and extract its iteration space for further processing (such as collapsing).
Definition at line 4134 of file SemaOpenMP.cpp.
Referenced by CheckOpenMPLoop().
|
static |
Called on a for stmt to check itself and nested loops (if any).
Definition at line 4456 of file SemaOpenMP.cpp.
References clang::Sema::AA_Converting, clang::Sema::ActOnConditionalOp(), clang::Sema::ActOnFinishFullExpr(), clang::Sema::ActOnIntegerConstant(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildBinOp(), BuildCounterInit(), BuildCounterUpdate(), buildDeclRefExpr(), buildPreInits(), buildVarDecl(), clang::C, clang::OMPLoopDirective::HelperExprs::CalcLastIteration, CheckOpenMPIterationSpace(), clang::OMPLoopDirective::HelperExprs::clear(), clang::OMPLoopDirective::DistCombinedHelperExprs::Cond, clang::OMPLoopDirective::HelperExprs::Cond, clang::Sema::Context, clang::OMPLoopDirective::HelperExprs::Counters, clang::Sema::CurContext, clang::Sema::DefaultLvalueConversion(), clang::Sema::Diag(), clang::OMPLoopDirective::HelperExprs::DistCombinedFields, clang::OMPLoopDirective::HelperExprs::DistInc, clang::OMPLoopDirective::DistCombinedHelperExprs::EUB, clang::OMPLoopDirective::HelperExprs::EUB, clang::Expr::EvaluateAsInt(), clang::OMPLoopDirective::HelperExprs::Finals, FitsInto(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Sema::getASTContext(), clang::Expr::getExprLoc(), clang::ASTContext::getIntTypeForBitwidth(), clang::Stmt::getSourceRange(), clang::Stmt::IgnoreContainers(), clang::OMPLoopDirective::HelperExprs::IL, clang::OMPLoopDirective::HelperExprs::Inc, clang::OMPLoopDirective::DistCombinedHelperExprs::Init, clang::OMPLoopDirective::HelperExprs::Init, clang::OMPLoopDirective::HelperExprs::Inits, clang::DeclContext::isDependentContext(), clang::isOpenMPDistributeDirective(), clang::isOpenMPLoopBoundSharingDirective(), clang::isOpenMPTaskLoopDirective(), clang::isOpenMPWorksharingDirective(), clang::ActionResult< PtrTy, CompressInvalid >::isUnset(), clang::ActionResult< PtrTy, CompressInvalid >::isUsable(), clang::OMPLoopDirective::HelperExprs::IterationVarRef, clang::OMPLoopDirective::HelperExprs::LastIteration, clang::OMPLoopDirective::DistCombinedHelperExprs::LB, clang::OMPLoopDirective::HelperExprs::LB, clang::OMPLoopDirective::DistCombinedHelperExprs::NLB, clang::OMPLoopDirective::HelperExprs::NLB, clang::OMPLoopDirective::DistCombinedHelperExprs::NUB, clang::OMPLoopDirective::HelperExprs::NUB, clang::OMPLoopDirective::HelperExprs::NumIterations, clang::Sema::PerformImplicitConversion(), clang::OMPLoopDirective::HelperExprs::PreCond, clang::OMPLoopDirective::HelperExprs::PreInits, clang::OMPLoopDirective::HelperExprs::PrevEUB, clang::OMPLoopDirective::HelperExprs::PrevLB, clang::OMPLoopDirective::HelperExprs::PrevUB, clang::OMPLoopDirective::HelperExprs::PrivateCounters, clang::Result, clang::OMPLoopDirective::HelperExprs::ST, clang::OMPLoopDirective::DistCombinedHelperExprs::UB, clang::OMPLoopDirective::HelperExprs::UB, clang::diff::Update, clang::OMPLoopDirective::HelperExprs::Updates, and WidenIterationCount().
Referenced by clang::Sema::ActOnOpenMPDistributeDirective(), clang::Sema::ActOnOpenMPDistributeParallelForDirective(), clang::Sema::ActOnOpenMPDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPDistributeSimdDirective(), clang::Sema::ActOnOpenMPForDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPTargetParallelForDirective(), clang::Sema::ActOnOpenMPTargetParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::Sema::ActOnOpenMPTaskLoopDirective(), clang::Sema::ActOnOpenMPTaskLoopSimdDirective(), clang::Sema::ActOnOpenMPTeamsDistributeDirective(), clang::Sema::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::Sema::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), and clang::Sema::ActOnOpenMPTeamsDistributeSimdDirective().
Definition at line 6660 of file SemaOpenMP.cpp.
References clang::C, clang::Sema::Diag(), clang::OMPClause::getLocEnd(), and clang::OMPClause::getLocStart().
Referenced by clang::Sema::ActOnOpenMPTaskLoopDirective(), and clang::Sema::ActOnOpenMPTaskLoopSimdDirective().
|
static |
Definition at line 8588 of file SemaOpenMP.cpp.
References clang::Sema::Diag(), getListOfPossibleValues(), clang::getOpenMPClauseName(), clang::SourceLocation::isValid(), clang::OMPC_SCHEDULE_MODIFIER_last, and clang::OMPC_SCHEDULE_MODIFIER_unknown.
Referenced by clang::Sema::ActOnOpenMPScheduleClause().
Definition at line 5065 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::Sema::Diag(), clang::Expr::EvaluateAsInt(), clang::OMPClause::getClauseKind(), clang::OMPSafelenClause::getSafelen(), and clang::OMPSimdlenClause::getSimdlen().
Referenced by clang::Sema::ActOnOpenMPDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPDistributeSimdDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPTargetParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::Sema::ActOnOpenMPTaskLoopSimdDirective(), clang::Sema::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), and clang::Sema::ActOnOpenMPTeamsDistributeSimdDirective().
|
static |
Definition at line 11384 of file SemaOpenMP.cpp.
References clang::Sema::Diag(), and clang::Type::isIncompleteType().
Referenced by checkMappableExpressionList(), and checkValueDeclInTarget().
|
static |
Definition at line 12722 of file SemaOpenMP.cpp.
References CheckTypeMappable(), clang::ValueDecl::getType(), and clang::Decl::hasAttr().
Referenced by clang::Sema::checkDeclIsAllowedInOpenMPTarget().
|
static |
Definition at line 9702 of file SemaOpenMP.cpp.
References clang::T.
|
static |
Definition at line 10803 of file SemaOpenMP.cpp.
References clang::Sema::ActOnFinishFullExpr(), clang::Sema::ActOnIntegerConstant(), BuildCounterUpdate(), buildDeclRefExpr(), CalcStep, clang::Sema::Diag(), Finals, clang::ActionResult< PtrTy, CompressInvalid >::get(), getPrivateItem(), clang::isOpenMPDistributeDirective(), clang::isOpenMPSimdDirective(), Step, clang::diff::Update, Updates, and clang::OMPVarListClause< T >::varlists().
Referenced by clang::Sema::ActOnOpenMPDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPDistributeSimdDirective(), clang::Sema::ActOnOpenMPForDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPTargetParallelForDirective(), clang::Sema::ActOnOpenMPTargetParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::Sema::ActOnOpenMPTaskLoopSimdDirective(), clang::Sema::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPTeamsDistributeSimdDirective(), and clang::Sema::EndOpenMPDSABlock().
Check if the given expression E is a constant integer that fits into Bits bits.
Definition at line 4399 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::Expr::isIntegerConstantExpr(), and clang::Result.
Referenced by CheckOpenMPLoop().
Definition at line 589 of file SemaOpenMP.cpp.
References clang::FieldDecl::getCanonicalDecl(), and getExprAsWritten().
Referenced by clang::Sema::ActOnOpenMPDeclareSimdDirective(), getPrivateItem(), clang::Sema::IsOpenMPCapturedDecl(), and clang::Sema::setOpenMPCaptureKind().
Definition at line 5049 of file SemaOpenMP.cpp.
Referenced by clang::Sema::ActOnOpenMPDistributeDirective(), clang::Sema::ActOnOpenMPDistributeParallelForDirective(), clang::Sema::ActOnOpenMPDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPDistributeSimdDirective(), clang::Sema::ActOnOpenMPForDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPTargetParallelForDirective(), clang::Sema::ActOnOpenMPTargetParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(), clang::Sema::ActOnOpenMPTargetTeamsDistributeSimdDirective(), clang::Sema::ActOnOpenMPTaskLoopDirective(), clang::Sema::ActOnOpenMPTaskLoopSimdDirective(), clang::Sema::ActOnOpenMPTeamsDistributeDirective(), clang::Sema::ActOnOpenMPTeamsDistributeParallelForDirective(), clang::Sema::ActOnOpenMPTeamsDistributeParallelForSimdDirective(), and clang::Sema::ActOnOpenMPTeamsDistributeSimdDirective().
Definition at line 574 of file SemaOpenMP.cpp.
Referenced by getCanonicalDecl().
|
static |
Definition at line 8432 of file SemaOpenMP.cpp.
References clang::getOpenMPSimpleClauseTypeName(), and clang::Last.
Referenced by clang::Sema::ActOnOpenMPDefaultClause(), clang::Sema::ActOnOpenMPDependClause(), clang::Sema::ActOnOpenMPProcBindClause(), clang::Sema::ActOnOpenMPScheduleClause(), and checkScheduleModifiers().
|
static |
Definition at line 7605 of file SemaOpenMP.cpp.
References clang::OMPC_threadprivate, clang::OMPC_uniform, clang::OMPC_unknown, and clang::OMPD_unknown.
Referenced by clang::Sema::ActOnOpenMPDeviceClause(), clang::Sema::ActOnOpenMPIfClause(), clang::Sema::ActOnOpenMPNumTeamsClause(), clang::Sema::ActOnOpenMPNumThreadsClause(), and clang::Sema::ActOnOpenMPThreadLimitClause().
Definition at line 5057 of file SemaOpenMP.cpp.
Referenced by clang::Sema::ActOnOpenMPForDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPTargetParallelForDirective(), clang::Sema::ActOnOpenMPTargetParallelForSimdDirective(), and clang::Sema::ActOnOpenMPTargetSimdDirective().
|
static |
Definition at line 8970 of file SemaOpenMP.cpp.
References clang::Expr::containsUnexpandedParameterPack(), clang::Sema::Diag(), getCanonicalDecl(), clang::Sema::getCurrentThisType(), clang::Expr::getExprLoc(), clang::Stmt::getSourceRange(), clang::Expr::IgnoreParenImpCasts(), clang::Expr::IgnoreParens(), clang::QualType::isNull(), clang::Expr::isTypeDependent(), and clang::Expr::isValueDependent().
Referenced by clang::Sema::ActOnOpenMPAlignedClause(), clang::Sema::ActOnOpenMPCopyprivateClause(), clang::Sema::ActOnOpenMPFirstprivateClause(), clang::Sema::ActOnOpenMPIsDevicePtrClause(), clang::Sema::ActOnOpenMPLastprivateClause(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPPrivateClause(), clang::Sema::ActOnOpenMPSharedClause(), clang::Sema::ActOnOpenMPUseDevicePtrClause(), and FinishOpenMPLinearClause().
|
static |
Check for existence of a map clause in the list of clauses.
Definition at line 6439 of file SemaOpenMP.cpp.
References clang::C, and clang::OMPClause::getClauseKind().
Referenced by clang::Sema::ActOnOpenMPTargetDataDirective(), clang::Sema::ActOnOpenMPTargetEnterDataDirective(), clang::Sema::ActOnOpenMPTargetExitDataDirective(), clang::Sema::ActOnOpenMPTargetUpdateDirective(), and hasClauses().
|
static |
Definition at line 6446 of file SemaOpenMP.cpp.
References hasClauses().
|
static |
Definition at line 8212 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::Sema::Diag(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Expr::getExprLoc(), clang::getOpenMPClauseName(), clang::Stmt::getSourceRange(), clang::Expr::isInstantiationDependent(), clang::Expr::isIntegerConstantExpr(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), clang::Sema::PerformOpenMPImplicitIntegerConversion(), and clang::Result.
Referenced by clang::Sema::ActOnOpenMPDeviceClause(), clang::Sema::ActOnOpenMPGrainsizeClause(), clang::Sema::ActOnOpenMPNumTasksClause(), clang::Sema::ActOnOpenMPNumTeamsClause(), clang::Sema::ActOnOpenMPNumThreadsClause(), clang::Sema::ActOnOpenMPPriorityClause(), and clang::Sema::ActOnOpenMPThreadLimitClause().
|
static |
Definition at line 1791 of file SemaOpenMP.cpp.
References clang::Sema::Diag(), clang::Sema::getASTContext(), clang::Decl::getLocation(), clang::getOpenMPClauseName(), clang::getOpenMPDirectiveName(), clang::ValueDecl::getType(), clang::QualType::isConstant(), and clang::isOpenMPTaskingDirective().
Referenced by clang::Sema::ActOnOpenMPCopyprivateClause(), clang::Sema::ActOnOpenMPIsDevicePtrClause(), clang::Sema::ActOnOpenMPLastprivateClause(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPPrivateClause(), clang::Sema::ActOnOpenMPSharedClause(), clang::Sema::checkDeclIsAllowedInOpenMPTarget(), and checkMappableExpressionList().
|
static |
Convert integer expression E to make it have at least Bits bits.
Definition at line 4383 of file SemaOpenMP.cpp.
References clang::Sema::AA_Converting, clang::C, clang::Sema::Context, clang::ExprError(), clang::Expr::getType(), and clang::Sema::PerformImplicitConversion().
Referenced by CheckOpenMPLoop().