FLANG
Public Types | Public Member Functions | List of all members
Fortran::semantics::OmpStructureChecker Class Reference
Inheritance diagram for Fortran::semantics::OmpStructureChecker:
Fortran::semantics::DirectiveStructureChecker< llvm::omp::Directive, llvm::omp::Clause, parser::OmpClause, llvm::omp::Clause_enumSize > Fortran::semantics::BaseChecker

Public Types

using Base = DirectiveStructureChecker< llvm::omp::Directive, llvm::omp::Clause, parser::OmpClause, llvm::omp::Clause_enumSize >
 
using llvmOmpClause = const llvm::omp::Clause
 

Public Member Functions

 OmpStructureChecker (SemanticsContext &context)
 
void Enter (const parser::OpenMPConstruct &)
 
void Leave (const parser::OpenMPConstruct &)
 
void Enter (const parser::OpenMPDeclarativeConstruct &)
 
void Leave (const parser::OpenMPDeclarativeConstruct &)
 
void Enter (const parser::OpenMPLoopConstruct &)
 
void Leave (const parser::OpenMPLoopConstruct &)
 
void Enter (const parser::OmpEndLoopDirective &)
 
void Leave (const parser::OmpEndLoopDirective &)
 
void Enter (const parser::OpenMPBlockConstruct &)
 
void Leave (const parser::OpenMPBlockConstruct &)
 
void Leave (const parser::OmpBeginBlockDirective &)
 
void Enter (const parser::OmpEndBlockDirective &)
 
void Leave (const parser::OmpEndBlockDirective &)
 
void Enter (const parser::OpenMPSectionsConstruct &)
 
void Leave (const parser::OpenMPSectionsConstruct &)
 
void Enter (const parser::OmpEndSectionsDirective &)
 
void Leave (const parser::OmpEndSectionsDirective &)
 
void Enter (const parser::OpenMPDeclareSimdConstruct &)
 
void Leave (const parser::OpenMPDeclareSimdConstruct &)
 
void Enter (const parser::OpenMPDeclarativeAllocate &)
 
void Leave (const parser::OpenMPDeclarativeAllocate &)
 
void Enter (const parser::OpenMPDeclareMapperConstruct &)
 
void Leave (const parser::OpenMPDeclareMapperConstruct &)
 
void Enter (const parser::OpenMPDeclareTargetConstruct &)
 
void Leave (const parser::OpenMPDeclareTargetConstruct &)
 
void Enter (const parser::OpenMPDepobjConstruct &)
 
void Leave (const parser::OpenMPDepobjConstruct &)
 
void Enter (const parser::OmpDeclareTargetWithList &)
 
void Enter (const parser::OmpDeclareTargetWithClause &)
 
void Leave (const parser::OmpDeclareTargetWithClause &)
 
void Enter (const parser::OmpErrorDirective &)
 
void Leave (const parser::OmpErrorDirective &)
 
void Enter (const parser::OpenMPExecutableAllocate &)
 
void Leave (const parser::OpenMPExecutableAllocate &)
 
void Enter (const parser::OpenMPAllocatorsConstruct &)
 
void Leave (const parser::OpenMPAllocatorsConstruct &)
 
void Enter (const parser::OpenMPRequiresConstruct &)
 
void Leave (const parser::OpenMPRequiresConstruct &)
 
void Enter (const parser::OpenMPThreadprivate &)
 
void Leave (const parser::OpenMPThreadprivate &)
 
void Enter (const parser::OpenMPSimpleStandaloneConstruct &)
 
void Leave (const parser::OpenMPSimpleStandaloneConstruct &)
 
void Enter (const parser::OpenMPFlushConstruct &)
 
void Leave (const parser::OpenMPFlushConstruct &)
 
void Enter (const parser::OpenMPCancelConstruct &)
 
void Leave (const parser::OpenMPCancelConstruct &)
 
void Enter (const parser::OpenMPCancellationPointConstruct &)
 
void Leave (const parser::OpenMPCancellationPointConstruct &)
 
void Enter (const parser::OpenMPCriticalConstruct &)
 
void Leave (const parser::OpenMPCriticalConstruct &)
 
void Enter (const parser::OpenMPAtomicConstruct &)
 
void Leave (const parser::OpenMPAtomicConstruct &)
 
void Leave (const parser::OmpClauseList &)
 
void Enter (const parser::OmpClause &)
 
void Enter (const parser::OmpAtomicRead &)
 
void Leave (const parser::OmpAtomicRead &)
 
void Enter (const parser::OmpAtomicWrite &)
 
void Leave (const parser::OmpAtomicWrite &)
 
void Enter (const parser::OmpAtomicUpdate &)
 
void Leave (const parser::OmpAtomicUpdate &)
 
void Enter (const parser::OmpAtomicCapture &)
 
void Leave (const parser::OmpAtomic &)
 
void Enter (const parser::DoConstruct &)
 
void Leave (const parser::DoConstruct &)
 
void Leave (const parser::OmpClause::Fail &)
 
void Enter (const parser::OmpFailClause &)
 
void Leave (const parser::OmpFailClause &)
 
- Public Member Functions inherited from Fortran::semantics::BaseChecker
template<typename N >
void Enter (const N &)
 
template<typename N >
void Leave (const N &)
 

Additional Inherited Members

- Protected Types inherited from Fortran::semantics::DirectiveStructureChecker< llvm::omp::Directive, llvm::omp::Clause, parser::OmpClause, llvm::omp::Clause_enumSize >
using ClauseMapTy = std::multimap< llvm::omp::Clause, const parser::OmpClause * >
 
- Protected Member Functions inherited from Fortran::semantics::DirectiveStructureChecker< llvm::omp::Directive, llvm::omp::Clause, parser::OmpClause, llvm::omp::Clause_enumSize >
 DirectiveStructureChecker (SemanticsContext &context, const std::unordered_map< llvm::omp::Directive, DirectiveClauses< llvm::omp::Clause, ClauseEnumSize > > &directiveClausesMap)
 
void SetLoopIv (Symbol *symbol)
 
DirectiveContext & GetContext ()
 
DirectiveContext & GetContextParent ()
 
void SetContextClause (const parser::OmpClause &clause)
 
void ResetPartialContext (const parser::CharBlock &source)
 
void SetContextDirectiveSource (const parser::CharBlock &directive)
 
void SetContextDirectiveEnum (llvm::omp::Directive dir)
 
void SetContextAllowed (const common::EnumSet< llvm::omp::Clause, ClauseEnumSize > &allowed)
 
void SetContextAllowedOnce (const common::EnumSet< llvm::omp::Clause, ClauseEnumSize > &allowedOnce)
 
void SetContextAllowedExclusive (const common::EnumSet< llvm::omp::Clause, ClauseEnumSize > &allowedExclusive)
 
void SetContextRequired (const common::EnumSet< llvm::omp::Clause, ClauseEnumSize > &required)
 
void SetContextClauseInfo (llvm::omp::Clause type)
 
void AddClauseToCrtContext (llvm::omp::Clause type)
 
void AddClauseToCrtGroupInContext (llvm::omp::Clause type)
 
void ResetCrtGroup ()
 
const parser::OmpClauseFindClause (llvm::omp::Clause type)
 
const parser::OmpClauseFindClause (DirectiveContext &context, llvm::omp::Clause type)
 
const parser::OmpClauseFindClauseParent (llvm::omp::Clause type)
 
llvm::iterator_range< typename ClauseMapTy::iterator > FindClauses (llvm::omp::Clause type)
 
DirectiveContext * GetEnclosingDirContext ()
 
void PushContext (const parser::CharBlock &source, llvm::omp::Directive dir)
 
DirectiveContext * GetEnclosingContextWithDir (llvm::omp::Directive dir)
 
bool CurrentDirectiveIsNested ()
 
void SetClauseSets (llvm::omp::Directive dir)
 
void PushContextAndClauseSets (const parser::CharBlock &source, llvm::omp::Directive dir)
 
void SayNotMatching (const parser::CharBlock &, const parser::CharBlock &)
 
void CheckMatching (const B &beginDir, const B &endDir)
 
void CheckNoBranching (const parser::Block &block, llvm::omp::Directive directive, const parser::CharBlock &directiveSource)
 
void CheckOnlyAllowedAfter (llvm::omp::Clause clause, common::EnumSet< llvm::omp::Clause, ClauseEnumSize > set)
 
void CheckRequireAtLeastOneOf (bool warnInsteadOfError=false)
 
bool CheckAllowed (llvm::omp::Clause clause, bool warnInsteadOfError=false)
 
void CheckAllowedOncePerGroup (llvm::omp::Clause clause, llvm::omp::Clause separator)
 
void CheckMutuallyExclusivePerGroup (llvm::omp::Clause clause, llvm::omp::Clause separator, common::EnumSet< llvm::omp::Clause, ClauseEnumSize > set)
 
void CheckAtLeastOneClause ()
 
void CheckNotAllowedIfClause (llvm::omp::Clause clause, common::EnumSet< llvm::omp::Clause, ClauseEnumSize > set)
 
std::string ContextDirectiveAsFortran ()
 
void RequiresConstantPositiveParameter (const llvm::omp::Clause &clause, const parser::ScalarIntConstantExpr &i)
 
void RequiresPositiveParameter (const llvm::omp::Clause &clause, const parser::ScalarIntExpr &i, llvm::StringRef paramName="parameter")
 
void OptionalConstantPositiveParameter (const llvm::omp::Clause &clause, const std::optional< parser::ScalarIntConstantExpr > &o)
 
virtual llvm::StringRef getClauseName (llvm::omp::Clause clause)
 
virtual llvm::StringRef getDirectiveName (llvm::omp::Directive directive)
 
std::string ClauseSetToString (const common::EnumSet< llvm::omp::Clause, ClauseEnumSize > set)
 
- Protected Attributes inherited from Fortran::semantics::DirectiveStructureChecker< llvm::omp::Directive, llvm::omp::Clause, parser::OmpClause, llvm::omp::Clause_enumSize >
SemanticsContextcontext_
 
std::vector< DirectiveContext > dirContext_
 
std::unordered_map< llvm::omp::Directive, DirectiveClauses< llvm::omp::Clause, ClauseEnumSize > > directiveClausesMap_
 

The documentation for this class was generated from the following files: