14#ifndef FORTRAN_SEMANTICS_CHECK_ACC_STRUCTURE_H_
15#define FORTRAN_SEMANTICS_CHECK_ACC_STRUCTURE_H_
17#include "check-directive-structure.h"
18#include "flang/Common/enum-set.h"
19#include "flang/Parser/parse-tree.h"
20#include "flang/Semantics/semantics.h"
21#include "llvm/ADT/DenseMap.h"
22#include "llvm/Frontend/OpenACC/ACC.h.inc"
25 llvm::acc::Directive_enumSize>;
30#define GEN_FLANG_DIRECTIVE_CLAUSE_SETS
31#include "llvm/Frontend/OpenACC/ACC.inc"
33namespace Fortran::semantics {
37 parser::AccClause, llvm::acc::Clause_enumSize> {
41#define GEN_FLANG_DIRECTIVE_CLAUSE_MAP
42#include
"llvm/Frontend/OpenACC/ACC.inc"
79#define GEN_FLANG_CLAUSE_CHECK_ENTER
80#include "llvm/Frontend/OpenACC/ACC.inc"
83 bool CheckAllowedModifier(llvm::acc::Clause clause);
84 bool IsComputeConstruct(llvm::acc::Directive directive)
const;
85 bool IsInsideComputeConstruct()
const;
86 void CheckNotInComputeConstruct();
87 void CheckMultipleOccurrenceInDeclare(
88 const parser::AccObjectList &, llvm::acc::Clause);
89 void CheckMultipleOccurrenceInDeclare(
91 llvm::StringRef getClauseName(llvm::acc::Clause clause)
override;
92 llvm::StringRef getDirectiveName(llvm::acc::Directive directive)
override;
94 llvm::SmallDenseMap<Symbol *, llvm::acc::Clause> declareSymbols;
95 unsigned loopNestLevel = 0;
Definition: enum-set.h:28
Definition: check-acc-structure.h:37
Definition: check-directive-structure.h:181
Definition: semantics.h:67
Definition: parse-tree.h:4962
Definition: parse-tree.h:4904
Definition: parse-tree.h:4889
Definition: parse-tree.h:4820
Definition: parse-tree.h:2338
Definition: parse-tree.h:3298
Definition: parse-tree.h:2971
Definition: parse-tree.h:4977
Definition: parse-tree.h:4984
Definition: parse-tree.h:4915
Definition: parse-tree.h:5006
Definition: parse-tree.h:5034
Definition: parse-tree.h:5025
Definition: parse-tree.h:4909
Definition: parse-tree.h:5039
Definition: parse-tree.h:4989
Definition: parse-tree.h:4921
Definition: parse-tree.h:3324
Definition: parse-tree.h:3308