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:4987
Definition: parse-tree.h:4929
Definition: parse-tree.h:4914
Definition: parse-tree.h:4845
Definition: parse-tree.h:2338
Definition: parse-tree.h:3298
Definition: parse-tree.h:2971
Definition: parse-tree.h:5002
Definition: parse-tree.h:5009
Definition: parse-tree.h:4940
Definition: parse-tree.h:5031
Definition: parse-tree.h:5059
Definition: parse-tree.h:5050
Definition: parse-tree.h:4934
Definition: parse-tree.h:5064
Definition: parse-tree.h:5014
Definition: parse-tree.h:4946
Definition: parse-tree.h:3324
Definition: parse-tree.h:3308