Temporarily Revert "[flang][OpenMP] Enhance parser support for flush construct to...
authorEric Christopher <echristo@gmail.com>
Sat, 20 Jun 2020 08:18:53 +0000 (01:18 -0700)
committerEric Christopher <echristo@gmail.com>
Sat, 20 Jun 2020 08:18:53 +0000 (01:18 -0700)
as it's failing Semantics/omp-clause-validity01.f90.

This reverts commit b32401464f4c9c9d43a3ddcb351cb6c7c713fdb4.

flang/include/flang/Parser/dump-parse-tree.h
flang/include/flang/Parser/parse-tree.h
flang/lib/Parser/openmp-parsers.cpp
flang/lib/Parser/unparse.cpp
flang/test/Semantics/omp-clause-validity01.f90

index e5f25c2..ad93fcd 100644 (file)
@@ -520,8 +520,6 @@ public:
   NODE(parser, OpenMPDeclareReductionConstruct)
   NODE(parser, OpenMPDeclareSimdConstruct)
   NODE(parser, OpenMPDeclareTargetConstruct)
-  NODE(parser, OmpFlushMemoryClause)
-  NODE_ENUM(OmpFlushMemoryClause, FlushMemoryOrder)
   NODE(parser, OpenMPFlushConstruct)
   NODE(parser, OpenMPLoopConstruct)
   NODE(parser, OpenMPSimpleStandaloneConstruct)
index 8481a55..933638d 100644 (file)
@@ -3718,23 +3718,11 @@ struct OpenMPCancelConstruct {
   std::tuple<Verbatim, OmpCancelType, std::optional<If>> t;
 };
 
-// 2.18.8 Flush Construct [OpenMP 5.0]
-// memory-order-clause -> acq_rel
-//                        release
-//                        acquire
-struct OmpFlushMemoryClause {
-  ENUM_CLASS(FlushMemoryOrder, AcqRel, Release, Acquire)
-  WRAPPER_CLASS_BOILERPLATE(OmpFlushMemoryClause, FlushMemoryOrder);
-  CharBlock source;
-};
-
-// 2.18.8 flush -> FLUSH [memory-order-clause] [(variable-name-list)]
+// 2.13.7 flush -> FLUSH [(variable-name-list)]
 struct OpenMPFlushConstruct {
   TUPLE_CLASS_BOILERPLATE(OpenMPFlushConstruct);
   CharBlock source;
-  std::tuple<Verbatim, std::optional<OmpFlushMemoryClause>,
-      std::optional<OmpObjectList>>
-      t;
+  std::tuple<Verbatim, std::optional<OmpObjectList>> t;
 };
 
 struct OmpSimpleStandaloneDirective {
index 9aa81a7..2d81f5a 100644 (file)
@@ -298,19 +298,9 @@ TYPE_PARSER(sourced(construct<OpenMPCancellationPointConstruct>(
 TYPE_PARSER(sourced(construct<OpenMPCancelConstruct>(verbatim("CANCEL"_tok),
     Parser<OmpCancelType>{}, maybe("IF" >> parenthesized(scalarLogicalExpr)))))
 
-// 2.18.8 Flush construct
-//        flush -> FLUSH [memory-order-clause] [(variable-name-list)]
-//        memory-order-clause -> acq_rel
-//                               release
-//                               acquire
-TYPE_PARSER(sourced(construct<OmpFlushMemoryClause>(
-    "ACQ_REL" >> pure(OmpFlushMemoryClause::FlushMemoryOrder::AcqRel) ||
-    "RELEASE" >> pure(OmpFlushMemoryClause::FlushMemoryOrder::Release) ||
-    "ACQUIRE" >> pure(OmpFlushMemoryClause::FlushMemoryOrder::Acquire))))
-
-TYPE_PARSER(sourced(construct<OpenMPFlushConstruct>(verbatim("FLUSH"_tok),
-    maybe(Parser<OmpFlushMemoryClause>{}),
-    maybe(parenthesized(Parser<OmpObjectList>{})))))
+// 2.13.7 Flush construct
+TYPE_PARSER(sourced(construct<OpenMPFlushConstruct>(
+    verbatim("FLUSH"_tok), maybe(parenthesized(Parser<OmpObjectList>{})))))
 
 // Simple Standalone Directives
 TYPE_PARSER(sourced(construct<OmpSimpleStandaloneDirective>(first(
index 5acac38..c2b5c28 100644 (file)
@@ -2359,24 +2359,10 @@ public:
     Put("\n");
     EndOpenMP();
   }
-  void Unparse(const OmpFlushMemoryClause &x) {
-    switch (x.v) {
-    case OmpFlushMemoryClause::FlushMemoryOrder::AcqRel:
-      Word("ACQ_REL ");
-      break;
-    case OmpFlushMemoryClause::FlushMemoryOrder::Release:
-      Word("RELEASE ");
-      break;
-    case OmpFlushMemoryClause::FlushMemoryOrder::Acquire:
-      Word("ACQUIRE ");
-      break;
-    }
-  }
   void Unparse(const OpenMPFlushConstruct &x) {
     BeginOpenMP();
-    Word("!$OMP FLUSH ");
-    Walk(std::get<std::optional<OmpFlushMemoryClause>>(x.t));
-    Walk(" (", std::get<std::optional<OmpObjectList>>(x.t), ")");
+    Word("!$OMP FLUSH");
+    Walk("(", std::get<std::optional<OmpObjectList>>(x.t), ")");
     Put("\n");
     EndOpenMP();
   }
index e3f43dc..06fd720 100644 (file)
   !ERROR: Internal: no symbol found for 'i'
   !$omp ordered depend(sink:i-1)
   !$omp flush (c)
-  !$omp flush acq_rel
-  !$omp flush release
-  !$omp flush acquire
-  !$omp flush release (c)
   !$omp cancel DO
   !$omp cancellation point parallel