clang
8.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/AST/TypeOrdering.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 const Expr * | checkMapClauseExpressionBase (Sema &SemaRef, Expr *E, OMPClauseMappableExprCommon::MappableExprComponentList &CurComponents, OpenMPClauseKind CKind, bool NoDiagnose) |
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. More... | |
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 | FinishOpenMPLinearClause (OMPLinearClause &Clause, DeclRefExpr *IV, Expr *NumIterations, Sema &SemaRef, Scope *S, DSAStackTy *Stack) |
static void | reportOriginalDsa (Sema &SemaRef, const DSAStackTy *Stack, const ValueDecl *D, const 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, const 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, unsigned TotalNestedLoopCount, Expr *CollapseLoopCountExpr, Expr *OrderedLoopCountExpr, Sema::VarsWithInheritedDSAType &VarsWithImplicitDSA, LoopIterationSpace &ResultIterSpace, llvm::MapVector< const 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< const 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< const 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, const 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< const 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, Sema::VarsWithInheritedDSAType &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 , typename U > | |
static T | filterLookupForUDR (SmallVectorImpl< U > &Lookups, const llvm::function_ref< T(ValueDecl *)> Gen) |
static NamedDecl * | findAcceptableDecl (Sema &SemaRef, NamedDecl *D) |
static void | argumentDependentLookup (Sema &SemaRef, const DeclarationNameInfo &ReductionId, 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 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, 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. More... | |
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 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 1387 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::ActOnOpenMPOrderedDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPParallelSectionsDirective(), clang::Sema::ActOnOpenMPPrivateClause(), clang::Sema::ActOnOpenMPReductionClause(), clang::Sema::ActOnOpenMPRegionEnd(), clang::Sema::ActOnOpenMPRequiresDirective(), 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::CheckOMPRequiresDecl(), clang::Sema::EndOpenMPClause(), clang::Sema::EndOpenMPDSABlock(), clang::Sema::isInOpenMPTargetExecutionDirective(), clang::Sema::isOpenMPCapturedByRef(), clang::Sema::isOpenMPCapturedDecl(), clang::Sema::isOpenMPPrivateDecl(), clang::Sema::isOpenMPTargetCapturedDecl(), clang::Sema::setOpenMPCaptureKind(), clang::Sema::StartOpenMPClause(), clang::Sema::StartOpenMPDSABlock(), and clang::Sema::startOpenMPLoop().
Default data sharing attributes, which can be applied to directive.
Definition at line 46 of file SemaOpenMP.cpp.
enum DefaultMapAttributes |
Attributes of the defaultmap clause.
Definition at line 53 of file SemaOpenMP.cpp.
|
static |
Definition at line 10832 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 10532 of file SemaOpenMP.cpp.
References findAcceptableDecl(), clang::Sema::FindAssociatedClassesAndNamespaces(), clang::DeclarationNameInfo::getName(), clang::Sema::isVisible(), and clang::VK_LValue.
Referenced by buildDeclareReductionRef().
|
static |
Definition at line 2857 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 2869 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 2828 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::Stmt::getBeginLoc(), clang::Expr::getExprLoc(), clang::Sema::getLangOpts(), 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 4944 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(), clang::ActionResult< PtrTy, CompressInvalid >::isUsable(), and clang::Sema::PerformImplicitConversion().
Referenced by checkOpenMPLoop().
|
static |
Build 'VarRef = Start + Iter * Step'.
Definition at line 4966 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 10589 of file SemaOpenMP.cpp.
References clang::UnresolvedSetImpl::addDecl(), clang::UnresolvedSetImpl::append(), argumentDependentLookup(), clang::UnresolvedSetImpl::begin(), clang::LookupResult::begin(), clang::Sema::BuildDeclRefExpr(), clang::LookupResult::clear(), clang::Type::containsUnexpandedParameterPack(), clang::Sema::Context, clang::UnresolvedLookupExpr::Create(), clang::Sema::CurContext, clang::UnresolvedSetImpl::end(), clang::LookupResult::end(), clang::ExprError(), clang::Type::getAs(), clang::Scope::getParent(), clang::LookupResult::getRepresentativeDecl(), clang::ValueDecl::getType(), clang::CXXScopeSpec::getWithLocInContext(), clang::ASTContext::hasSameType(), 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::Sema::LookupOMPReductionName, clang::Sema::LookupParsedName(), clang::Sema::LookupQualifiedName(), clang::LookupResult::suppressDiagnostics(), and clang::VK_LValue.
|
static |
Definition at line 954 of file SemaOpenMP.cpp.
Referenced by clang::Sema::ActOnOpenMPDeclareReductionCombinerStart(), clang::Sema::ActOnOpenMPDeclareReductionInitializerStart(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPLoopInitialization(), clang::Sema::ActOnOpenMPUseDevicePtrClause(), buildCapture(), checkOpenMPLoop(), clang::Sema::EndOpenMPDSABlock(), and FinishOpenMPLinearClause().
Build postupdate expression for the given list of postupdates expressions.
Definition at line 5088 of file SemaOpenMP.cpp.
References clang::Sema::BuildCStyleCastExpr(), clang::Sema::Context, clang::Sema::CreateBuiltinBinOp(), clang::Expr::getExprLoc(), clang::ASTContext::getTrivialTypeSourceInfo(), and clang::ASTContext::VoidTy.
|
static |
Build preinits statement for the given declarations.
Definition at line 5064 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 5076 of file SemaOpenMP.cpp.
|
static |
Build a variable declaration for OpenMP loop iteration variable.
Definition at line 933 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 12352 of file SemaOpenMP.cpp.
References clang::Expr::EvaluateAsInt(), clang::Sema::getASTContext(), clang::APValue::getInt(), clang::QualType::getTypePtr(), clang::Result, and clang::Expr::EvalResult::Val.
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 12295 of file SemaOpenMP.cpp.
References clang::Expr::EvaluateAsInt(), clang::Sema::getASTContext(), clang::APValue::getInt(), clang::QualType::getTypePtr(), clang::Type::isPointerType(), clang::Result, and clang::Expr::EvalResult::Val.
Referenced by checkMapClauseExpressionBase(), and checkMapConflicts().
|
static |
Definition at line 3033 of file SemaOpenMP.cpp.
References clang::Sema::Diag(), and clang::getOpenMPDirectiveName().
Referenced by clang::Sema::ActOnOpenMPExecutableDirective().
|
static |
Definition at line 13661 of file SemaOpenMP.cpp.
References clang::Sema::Diag().
Definition at line 7318 of file SemaOpenMP.cpp.
References clang::C, clang::Sema::Diag(), clang::OMPClause::getBeginLoc(), clang::OMPClause::getClauseKind(), and clang::getOpenMPClauseName().
Referenced by clang::Sema::ActOnOpenMPTaskLoopDirective(), and clang::Sema::ActOnOpenMPTaskLoopSimdDirective().
|
static |
Definition at line 3267 of file SemaOpenMP.cpp.
References clang::C, clang::Sema::Diag(), End, clang::getOpenMPClauseName(), clang::getOpenMPDirectiveName(), and clang::OMPD_unknown.
|
static |
Definition at line 12388 of file SemaOpenMP.cpp.
References checkArrayExpressionDoesNotReferToUnitySize(), checkArrayExpressionDoesNotReferToWholeSize(), clang::Sema::Diag(), clang::Sema::getASTContext(), clang::OMPArraySectionExpr::getBaseOriginalType(), clang::QualType::getCanonicalType(), clang::Expr::getExprLoc(), clang::APValue::getInt(), clang::QualType::getNonReferenceType(), clang::getOpenMPClauseName(), clang::Type::getPointeeType(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::Expr::IgnoreParenImpCasts(), clang::Type::isAnyPointerType(), clang::Type::isArrayType(), clang::Type::isReferenceType(), clang::Type::isUnionType(), clang::Result, and clang::Expr::EvalResult::Val.
Referenced by checkMappableExpressionList().
|
static |
Definition at line 12638 of file SemaOpenMP.cpp.
References Begin, checkArrayExpressionDoesNotReferToWholeSize(), clang::Sema::Diag(), End, 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 12905 of file SemaOpenMP.cpp.
References checkMapClauseExpressionBase(), checkMapConflicts(), checkTypeMappable(), clang::Expr::containsUnexpandedParameterPack(), clang::Sema::Diag(), OMPClauseMappableExprCommon::MappableComponent::getAssociatedDeclaration(), clang::Expr::getExprLoc(), clang::getOpenMPClauseName(), clang::getOpenMPDirectiveName(), clang::getOpenMPSimpleClauseTypeName(), clang::Stmt::getSourceRange(), clang::Expr::IgnoreParenCasts(), clang::Expr::IgnoreParenImpCasts(), clang::Expr::IgnoreParenLValueCasts(), clang::Decl::isCanonicalDecl(), clang::Expr::isInstantiationDependent(), clang::Expr::isLValue(), clang::isOpenMPPrivate(), clang::isOpenMPTargetExecutionDirective(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), and reportOriginalDsa().
Referenced by clang::Sema::ActOnOpenMPFromClause(), clang::Sema::ActOnOpenMPMapClause(), and clang::Sema::ActOnOpenMPToClause().
|
static |
Definition at line 3049 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 10766 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 4754 of file SemaOpenMP.cpp.
Referenced by checkOpenMPLoop().
|
static |
Called on a for stmt to check itself and nested loops (if any).
Definition at line 5111 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::Diag(), clang::OMPLoopDirective::HelperExprs::DistCombinedFields, clang::OMPLoopDirective::DistCombinedHelperExprs::DistCond, 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::Stmt::getBeginLoc(), clang::Expr::getExprLoc(), clang::APValue::getInt(), clang::ASTContext::getIntTypeForBitwidth(), clang::Sema::getLangOpts(), clang::CapturedDecl::getNumParams(), clang::CapturedDecl::getParam(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::ValueDecl::getType(), clang::ASTContext::getTypeSize(), clang::Stmt::IgnoreContainers(), clang::Expr::IgnoreImpCasts(), 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 >::isUsable(), clang::OMPLoopDirective::HelperExprs::IterationVarRef, clang::OMPLoopDirective::HelperExprs::LastIteration, clang::OMPLoopDirective::DistCombinedHelperExprs::LB, clang::OMPLoopDirective::HelperExprs::LB, max(), clang::OMPLoopDirective::DistCombinedHelperExprs::NLB, clang::OMPLoopDirective::HelperExprs::NLB, clang::OMPLoopDirective::DistCombinedHelperExprs::NUB, clang::OMPLoopDirective::HelperExprs::NUB, clang::OMPLoopDirective::HelperExprs::NumIterations, clang::OMPLoopDirective::DistCombinedHelperExprs::ParForInDistCond, 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, clang::Expr::EvalResult::Val, 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 7342 of file SemaOpenMP.cpp.
References clang::C, clang::Sema::Diag(), clang::OMPClause::getBeginLoc(), and clang::OMPClause::getEndLoc().
Referenced by clang::Sema::ActOnOpenMPTaskLoopDirective(), and clang::Sema::ActOnOpenMPTaskLoopSimdDirective().
|
static |
Definition at line 9331 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 5722 of file SemaOpenMP.cpp.
References clang::Expr::containsUnexpandedParameterPack(), clang::Sema::Context, clang::Sema::Diag(), clang::Expr::EvaluateAsInt(), clang::OMPClause::getClauseKind(), 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::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 12278 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::Sema::CurContext, clang::Sema::Diag(), clang::DeclContext::isDependentContext(), clang::Type::isIncompleteType(), and clang::QualType::isTrivialType().
Referenced by checkMappableExpressionList(), and checkValueDeclInTarget().
|
static |
Definition at line 13672 of file SemaOpenMP.cpp.
References checkTypeMappable(), clang::ValueDecl::getType(), and clang::Decl::hasAttr().
Referenced by clang::Sema::checkDeclIsAllowedInOpenMPTarget().
|
static |
Definition at line 10504 of file SemaOpenMP.cpp.
Definition at line 10515 of file SemaOpenMP.cpp.
References clang::LookupResult::isVisible(), and clang::Decl::redecls().
Referenced by argumentDependentLookup().
|
static |
Definition at line 11703 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::ActOnOpenMPTargetTeamsDistributeParallelForDirective(), 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 5054 of file SemaOpenMP.cpp.
References clang::Sema::Context, clang::Expr::isIntegerConstantExpr(), and clang::Result.
Referenced by checkOpenMPLoop().
Definition at line 709 of file SemaOpenMP.cpp.
References clang::FieldDecl::getCanonicalDecl(), and getExprAsWritten().
Referenced by clang::Sema::ActOnOpenMPDeclareSimdDirective(), getCanonicalDecl(), getPrivateItem(), clang::Sema::isOpenMPCapturedDecl(), and clang::Sema::setOpenMPCaptureKind().
Definition at line 726 of file SemaOpenMP.cpp.
References getCanonicalDecl().
Definition at line 5706 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 690 of file SemaOpenMP.cpp.
References clang::Expr::IgnoreParens().
Referenced by getCanonicalDecl(), and getExprAsWritten().
Definition at line 705 of file SemaOpenMP.cpp.
References getExprAsWritten().
|
static |
Definition at line 9156 of file SemaOpenMP.cpp.
References clang::getOpenMPSimpleClauseTypeName(), and clang::Last.
Referenced by clang::Sema::ActOnOpenMPAtomicDefaultMemOrderClause(), clang::Sema::ActOnOpenMPDefaultClause(), clang::Sema::ActOnOpenMPDependClause(), clang::Sema::ActOnOpenMPProcBindClause(), clang::Sema::ActOnOpenMPScheduleClause(), and checkScheduleModifiers().
|
static |
Definition at line 8308 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 5714 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 9753 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(), FinishOpenMPLinearClause(), and getTeamsReductionVars().
|
static |
Check for existence of a map clause in the list of clauses.
Definition at line 7121 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 7128 of file SemaOpenMP.cpp.
References hasClauses().
|
static |
Definition at line 1087 of file SemaOpenMP.cpp.
|
static |
Definition at line 8924 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 1106 of file SemaOpenMP.cpp.
Referenced by clang::Sema::ActOnOpenMPLastprivateClause(), clang::Sema::ActOnOpenMPPrivateClause(), and clang::Sema::CheckOpenMPLinearDecl().
|
static |
Definition at line 2129 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 5038 of file SemaOpenMP.cpp.
References clang::Sema::AA_Converting, clang::C, clang::Sema::Context, clang::ExprError(), clang::ASTContext::getIntTypeForBitwidth(), clang::Expr::getType(), clang::ASTContext::getTypeSize(), and clang::Sema::PerformImplicitConversion().
Referenced by checkOpenMPLoop().