"ACQ_REL" >> construct<OmpClause>(construct<OmpClause::AcqRel>()) ||
"ALIGNED" >>
construct<OmpClause>(parenthesized(Parser<OmpAlignedClause>{})) ||
- "ALLOCATE" >>
- construct<OmpClause>(parenthesized(Parser<OmpAllocateClause>{})) ||
+ "ALLOCATE" >> construct<OmpClause>(construct<OmpClause::Allocate>(
+ parenthesized(Parser<OmpAllocateClause>{}))) ||
"ALLOCATOR" >> construct<OmpClause>(construct<OmpClause::Allocator>(
parenthesized(scalarIntExpr))) ||
"COLLAPSE" >> construct<OmpClause>(construct<OmpClause::Collapse>(
Put(")");
}
void Unparse(const OmpAllocateClause &x) {
- Word("ALLOCATE(");
- Walk(std::get<std::optional<OmpAllocateClause::Allocator>>(x.t), ":");
+ Walk(std::get<std::optional<OmpAllocateClause::Allocator>>(x.t));
+ Put(":");
Walk(std::get<OmpObjectList>(x.t));
- Put(")");
}
void Unparse(const OmpDependSinkVecLength &x) {
Walk(std::get<DefinedOperator>(x.t));
// Following clauses do not have a seperate node in parse-tree.h.
// They fall under 'struct OmpClause' in parse-tree.h.
+CHECK_SIMPLE_CLAUSE(Allocate, OMPC_allocate)
CHECK_SIMPLE_CLAUSE(Copyin, OMPC_copyin)
CHECK_SIMPLE_CLAUSE(Copyprivate, OMPC_copyprivate)
CHECK_SIMPLE_CLAUSE(Device, OMPC_device)
}
}
// Following clauses have a seperate node in parse-tree.h.
-CHECK_SIMPLE_PARSER_CLAUSE(OmpAllocateClause, OMPC_allocate)
CHECK_SIMPLE_PARSER_CLAUSE(OmpDefaultClause, OMPC_default)
CHECK_SIMPLE_PARSER_CLAUSE(OmpDistScheduleClause, OMPC_dist_schedule)
CHECK_SIMPLE_PARSER_CLAUSE(OmpNowait, OMPC_nowait)
void Leave(const parser::OmpClauseList &);
void Enter(const parser::OmpClause &);
void Enter(const parser::OmpNowait &);
+ void Enter(const parser::OmpClause::Allocate &);
void Enter(const parser::OmpClause::Allocator &);
void Enter(const parser::OmpClause::Inbranch &);
void Enter(const parser::OmpClause::Mergeable &);
void Enter(const parser::OmpAtomicCapture &);
void Leave(const parser::OmpAtomic &);
void Enter(const parser::OmpAlignedClause &);
- void Enter(const parser::OmpAllocateClause &);
void Enter(const parser::OmpDefaultClause &);
void Enter(const parser::OmpDefaultmapClause &);
void Enter(const parser::OmpDependClause &);
}
def OMPC_Allocate : Clause<"allocate"> {
let clangClass = "OMPAllocateClause";
- let flangClass = "OmpAllocateClause";
+ let flangClassValue = "OmpAllocateClause";
}
def OMPC_NonTemporal : Clause<"nontemporal"> {
let clangClass = "OMPNontemporalClause";