35class AccStructureChecker
36 :
public DirectiveStructureChecker<llvm::acc::Directive, llvm::acc::Clause,
37 parser::AccClause, llvm::acc::Clause_enumSize> {
40 : DirectiveStructureChecker(context,
41#define GEN_FLANG_DIRECTIVE_CLAUSE_MAP
42#include
"llvm/Frontend/OpenACC/ACC.inc"
82#define GEN_FLANG_CLAUSE_CHECK_ENTER
83#include "llvm/Frontend/OpenACC/ACC.inc"
89 const SomeExpr &updateVar,
const SomeExpr *captureVar);
91 const SomeExpr *updateVar,
const SomeExpr &captureVar);
93 const SomeExpr &updateVar,
const SomeExpr *captureVar);
94 void CheckAtomicUpdateVariable(
96 void CheckAtomicCaptureVariable(
99 bool CheckAllowedModifier(llvm::acc::Clause clause);
100 bool IsComputeConstruct(llvm::acc::Directive directive)
const;
101 bool IsLoopConstruct(llvm::acc::Directive directive)
const;
102 std::optional<llvm::acc::Directive> getParentComputeConstruct()
const;
103 bool IsInsideComputeConstruct()
const;
104 bool IsInsideKernelsConstruct()
const;
105 void CheckNotInComputeConstruct();
106 std::optional<std::int64_t> getGangDimensionSize(
107 DirectiveContext &dirContext);
108 void CheckNotInSameOrSubLevelLoopConstruct();
109 void CheckMultipleOccurrenceInDeclare(
110 const parser::AccObjectList &, llvm::acc::Clause);
111 void CheckMultipleOccurrenceInDeclare(
113 llvm::StringRef getClauseName(llvm::acc::Clause clause)
override;
114 llvm::StringRef getDirectiveName(llvm::acc::Directive directive)
override;
116 llvm::SmallDenseMap<Symbol *, llvm::acc::Clause> declareSymbols;
117 unsigned loopNestLevel = 0;
Definition semantics.h:67