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"
83#define GEN_FLANG_CLAUSE_CHECK_ENTER
84#include "llvm/Frontend/OpenACC/ACC.inc"
90 const SomeExpr &updateVar,
const SomeExpr *captureVar);
92 const SomeExpr *updateVar,
const SomeExpr &captureVar);
94 const SomeExpr &updateVar,
const SomeExpr *captureVar);
95 void CheckAtomicUpdateVariable(
97 void CheckAtomicCaptureVariable(
100 bool CheckAllowedModifier(llvm::acc::Clause clause);
101 bool IsComputeConstruct(llvm::acc::Directive directive)
const;
102 bool IsLoopConstruct(llvm::acc::Directive directive)
const;
103 std::optional<llvm::acc::Directive> getParentComputeConstruct()
const;
104 bool IsInsideComputeConstruct()
const;
105 bool IsInsideKernelsConstruct()
const;
106 void CheckNotInComputeConstruct();
107 std::optional<std::int64_t> getGangDimensionSize(
108 DirectiveContext &dirContext);
109 void CheckNotInSameOrSubLevelLoopConstruct();
110 void CheckMultipleOccurrenceInDeclare(
111 const parser::AccObjectList &, llvm::acc::Clause);
112 void CheckMultipleOccurrenceInDeclare(
114 llvm::StringRef getClauseName(llvm::acc::Clause clause)
override;
115 llvm::StringRef getDirectiveName(llvm::acc::Directive directive)
override;
117 llvm::SmallDenseMap<Symbol *, llvm::acc::Clause> declareSymbols;
118 unsigned loopNestLevel = 0;
Definition semantics.h:67