FLANG
Fortran::semantics::AccStructureChecker Class Reference
Inheritance diagram for Fortran::semantics::AccStructureChecker:
Fortran::semantics::DirectiveStructureChecker< llvm::acc::Directive, llvm::acc::Clause, parser::AccClause, llvm::acc::Clause_enumSize > Fortran::semantics::BaseChecker

Public Member Functions

 AccStructureChecker (SemanticsContext &context)
void Enter (const parser::OpenACCBlockConstruct &)
void Leave (const parser::OpenACCBlockConstruct &)
void Enter (const parser::OpenACCCombinedConstruct &)
void Leave (const parser::OpenACCCombinedConstruct &)
void Enter (const parser::OpenACCLoopConstruct &)
void Leave (const parser::OpenACCLoopConstruct &)
void Enter (const parser::OpenACCRoutineConstruct &)
void Leave (const parser::OpenACCRoutineConstruct &)
void Enter (const parser::OpenACCStandaloneConstruct &)
void Leave (const parser::OpenACCStandaloneConstruct &)
void Enter (const parser::OpenACCStandaloneDeclarativeConstruct &)
void Leave (const parser::OpenACCStandaloneDeclarativeConstruct &)
void Enter (const parser::OpenACCWaitConstruct &)
void Leave (const parser::OpenACCWaitConstruct &)
void Enter (const parser::OpenACCAtomicConstruct &)
void Leave (const parser::OpenACCAtomicConstruct &)
void Enter (const parser::OpenACCCacheConstruct &)
void Leave (const parser::OpenACCCacheConstruct &)
void Enter (const parser::AccAtomicUpdate &)
void Enter (const parser::AccAtomicCapture &)
void Enter (const parser::AccAtomicWrite &)
void Enter (const parser::AccAtomicRead &)
void Enter (const parser::OpenACCEndConstruct &)
void Leave (const parser::AccClauseList &)
void Enter (const parser::AccClause &)
void Enter (const parser::Module &)
void Enter (const parser::SubroutineSubprogram &)
void Enter (const parser::FunctionSubprogram &)
void Enter (const parser::SeparateModuleSubprogram &)
void Enter (const parser::DoConstruct &)
void Leave (const parser::DoConstruct &)
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::acc::Directive, llvm::acc::Clause, parser::AccClause, llvm::acc::Clause_enumSize >
using ClauseMapTy
Protected Member Functions inherited from Fortran::semantics::DirectiveStructureChecker< llvm::acc::Directive, llvm::acc::Clause, parser::AccClause, llvm::acc::Clause_enumSize >
 DirectiveStructureChecker (SemanticsContext &context, const std::unordered_map< llvm::acc::Directive, DirectiveClauses< llvm::acc::Clause, ClauseEnumSize > > &directiveClausesMap)
void SetLoopIv (Symbol *symbol)
DirectiveContext & GetContext ()
DirectiveContext & GetContextParent ()
void SetContextClause (const parser::AccClause &clause)
void ResetPartialContext (const parser::CharBlock &source)
void SetContextDirectiveSource (const parser::CharBlock &directive)
void SetContextDirectiveEnum (llvm::acc::Directive dir)
void SetContextAllowed (const common::EnumSet< llvm::acc::Clause, ClauseEnumSize > &allowed)
void SetContextAllowedOnce (const common::EnumSet< llvm::acc::Clause, ClauseEnumSize > &allowedOnce)
void SetContextAllowedExclusive (const common::EnumSet< llvm::acc::Clause, ClauseEnumSize > &allowedExclusive)
void SetContextRequired (const common::EnumSet< llvm::acc::Clause, ClauseEnumSize > &required)
void SetContextClauseInfo (llvm::acc::Clause type)
void AddClauseToCrtContext (llvm::acc::Clause type)
void AddClauseToCrtGroupInContext (llvm::acc::Clause type)
void ResetCrtGroup ()
const parser::AccClauseFindClause (llvm::acc::Clause type)
const parser::AccClauseFindClauseParent (llvm::acc::Clause type)
llvm::iterator_range< typename ClauseMapTy::iterator > FindClauses (llvm::acc::Clause type)
DirectiveContext * GetEnclosingDirContext ()
void PushContext (const parser::CharBlock &source, llvm::acc::Directive dir)
DirectiveContext * GetEnclosingContextWithDir (llvm::acc::Directive dir)
bool CurrentDirectiveIsNested ()
void SetClauseSets (llvm::acc::Directive dir)
void PushContextAndClauseSets (const parser::CharBlock &source, llvm::acc::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::acc::Directive directive, const parser::CharBlock &directiveSource)
void CheckOnlyAllowedAfter (llvm::acc::Clause clause, common::EnumSet< llvm::acc::Clause, ClauseEnumSize > set)
void CheckRequireAtLeastOneOf (bool warnInsteadOfError=false)
bool CheckAllowed (llvm::acc::Clause clause, bool warnInsteadOfError=false)
void CheckAllowedOncePerGroup (llvm::acc::Clause clause, llvm::acc::Clause separator)
void CheckMutuallyExclusivePerGroup (llvm::acc::Clause clause, llvm::acc::Clause separator, common::EnumSet< llvm::acc::Clause, ClauseEnumSize > set)
void CheckAtLeastOneClause ()
void CheckNotAllowedIfClause (llvm::acc::Clause clause, common::EnumSet< llvm::acc::Clause, ClauseEnumSize > set)
std::string ContextDirectiveAsFortran ()
void RequiresConstantPositiveParameter (const llvm::acc::Clause &clause, const parser::ScalarIntConstantExpr &i)
void RequiresPositiveParameter (const llvm::acc::Clause &clause, const parser::ScalarIntExpr &i, llvm::StringRef paramName="parameter")
void OptionalConstantPositiveParameter (const llvm::acc::Clause &clause, const std::optional< parser::ScalarIntConstantExpr > &o)
std::string ClauseSetToString (const common::EnumSet< llvm::acc::Clause, ClauseEnumSize > set)
Protected Attributes inherited from Fortran::semantics::DirectiveStructureChecker< llvm::acc::Directive, llvm::acc::Clause, parser::AccClause, llvm::acc::Clause_enumSize >
SemanticsContextcontext_
std::vector< DirectiveContext > dirContext_
std::unordered_map< llvm::acc::Directive, DirectiveClauses< llvm::acc::Clause, ClauseEnumSize > > directiveClausesMap_

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