FLANG
Public Member Functions | List of all members
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::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 = std::multimap< llvm::acc::Clause, const parser::AccClause * >
 
- 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::AccClauseFindClause (DirectiveContext &context, 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)
 
virtual llvm::StringRef getClauseName (llvm::acc::Clause clause)
 
virtual llvm::StringRef getDirectiveName (llvm::acc::Directive directive)
 
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: