mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 05:32:28 +08:00
[flang][OpenMP] Use OmpDirectiveSpecification in ASSUMES (#160591)
This commit is contained in:
committed by
GitHub
parent
e25be7709f
commit
17bfec5629
@@ -39,7 +39,6 @@ struct ConstructId {
|
||||
}
|
||||
|
||||
MAKE_CONSTR_ID(OpenMPDeclarativeAllocate, D::OMPD_allocate);
|
||||
MAKE_CONSTR_ID(OpenMPDeclarativeAssumes, D::OMPD_assumes);
|
||||
MAKE_CONSTR_ID(OpenMPDeclareReductionConstruct, D::OMPD_declare_reduction);
|
||||
MAKE_CONSTR_ID(OpenMPExecutableAllocate, D::OMPD_allocate);
|
||||
MAKE_CONSTR_ID(OpenMPRequiresConstruct, D::OMPD_requires);
|
||||
@@ -94,7 +93,6 @@ struct DirectiveNameScope {
|
||||
if constexpr (std::is_base_of_v<OmpBlockConstruct, T>) {
|
||||
return std::get<OmpBeginDirective>(x.t).DirName();
|
||||
} else if constexpr (std::is_same_v<T, OpenMPDeclarativeAllocate> ||
|
||||
std::is_same_v<T, OpenMPDeclarativeAssumes> ||
|
||||
std::is_same_v<T, OpenMPDeclareReductionConstruct> ||
|
||||
std::is_same_v<T, OpenMPExecutableAllocate> ||
|
||||
std::is_same_v<T, OpenMPRequiresConstruct>) {
|
||||
|
||||
@@ -4877,8 +4877,8 @@ struct OpenMPUtilityConstruct {
|
||||
// ASSUMES absent-clause | contains-clause | holds-clause | no-openmp-clause |
|
||||
// no-openmp-routines-clause | no-parallelism-clause
|
||||
struct OpenMPDeclarativeAssumes {
|
||||
TUPLE_CLASS_BOILERPLATE(OpenMPDeclarativeAssumes);
|
||||
std::tuple<Verbatim, OmpClauseList> t;
|
||||
WRAPPER_CLASS_BOILERPLATE(
|
||||
OpenMPDeclarativeAssumes, OmpDirectiveSpecification);
|
||||
CharBlock source;
|
||||
};
|
||||
|
||||
|
||||
@@ -1853,7 +1853,9 @@ TYPE_PARSER(
|
||||
|
||||
// Assumes Construct
|
||||
TYPE_PARSER(sourced(construct<OpenMPDeclarativeAssumes>(
|
||||
verbatim("ASSUMES"_tok), Parser<OmpClauseList>{})))
|
||||
predicated(OmpDirectiveNameParser{},
|
||||
IsDirective(llvm::omp::Directive::OMPD_assumes)) >=
|
||||
Parser<OmpDirectiveSpecification>{})))
|
||||
|
||||
// Declarative constructs
|
||||
TYPE_PARSER(
|
||||
|
||||
@@ -2558,8 +2558,8 @@ public:
|
||||
|
||||
void Unparse(const OpenMPDeclarativeAssumes &x) {
|
||||
BeginOpenMP();
|
||||
Word("!$OMP ASSUMES ");
|
||||
Walk(std::get<OmpClauseList>(x.t));
|
||||
Word("!$OMP ");
|
||||
Walk(x.v);
|
||||
Put("\n");
|
||||
EndOpenMP();
|
||||
}
|
||||
|
||||
@@ -620,10 +620,6 @@ template <typename Checker> struct DirectiveSpellingVisitor {
|
||||
checker_(GetDirName(x.t).source, Directive::OMPD_allocators);
|
||||
return false;
|
||||
}
|
||||
bool Pre(const parser::OpenMPDeclarativeAssumes &x) {
|
||||
checker_(std::get<parser::Verbatim>(x.t).source, Directive::OMPD_assumes);
|
||||
return false;
|
||||
}
|
||||
bool Pre(const parser::OpenMPGroupprivate &x) {
|
||||
checker_(x.v.DirName().source, Directive::OMPD_groupprivate);
|
||||
return false;
|
||||
|
||||
@@ -141,9 +141,11 @@ program p
|
||||
end program p
|
||||
|
||||
!UNPARSE: PROGRAM p
|
||||
!UNPARSE: !$OMP ASSUMES NO_OPENMP
|
||||
!UNPARSE: !$OMP ASSUMES NO_OPENMP
|
||||
!UNPARSE: END PROGRAM p
|
||||
|
||||
!PARSE-TREE: OpenMPDeclarativeConstruct -> OpenMPDeclarativeAssumes
|
||||
!PARSE-TREE: | Verbatim
|
||||
!PARSE-TREE: OpenMPDeclarativeConstruct -> OpenMPDeclarativeAssumes -> OmpDirectiveSpecification
|
||||
!PARSE-TREE: | OmpDirectiveName -> llvm::omp::Directive = assumes
|
||||
!PARSE-TREE: | OmpClauseList -> OmpClause -> NoOpenmp
|
||||
!PARSE-TREE: | Flags = None
|
||||
!PARSE-TREE: ImplicitPart ->
|
||||
|
||||
Reference in New Issue
Block a user