[PATCH] D108530: [flang][OpenMP] Fix one bug in parsing depend(sink: vec)

Peixin Qiao via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 22 19:16:06 PDT 2021


peixin created this revision.
peixin added reviewers: kiranchandramohan, clementval, richard.barton.arm, jdoerfert, sameeranjoshi, praveen, SouraVX, sscalpone, arnamoy10, bryanpkc, Chuanfeng.
peixin added a project: LLVM.
Herald added subscribers: guansong, yaxunl.
peixin requested review of this revision.
Herald added subscribers: llvm-commits, sstefan1.

This patch fixes one bug of no symbol found in parsing depend(sink: vec)
by replacing "Name" with "OmpObject". The "vec" in "depend(sink: vec)"
is one list of experssion of "OmpObject [Operator ScalarIntConstant]"
such as "i, j - 1".


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D108530

Files:
  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: flang/test/Semantics/omp-clause-validity01.f90
===================================================================
--- flang/test/Semantics/omp-clause-validity01.f90
+++ flang/test/Semantics/omp-clause-validity01.f90
@@ -482,7 +482,7 @@
   ! !$omp target update from(arrayA) to(arrayB)
   ! !$omp target exit data map(from:arrayA) map(delete:arrayB)
   !$omp ordered depend(source)
-  ! !$omp ordered depend(sink:i-1)
+  !$omp ordered depend(sink:i-1)
   !$omp flush (c)
   !$omp flush acq_rel
   !$omp flush release
Index: flang/lib/Parser/unparse.cpp
===================================================================
--- flang/lib/Parser/unparse.cpp
+++ flang/lib/Parser/unparse.cpp
@@ -2017,7 +2017,7 @@
     Walk(std::get<ScalarIntConstantExpr>(x.t));
   }
   void Unparse(const OmpDependSinkVec &x) {
-    Walk(std::get<Name>(x.t));
+    Walk(std::get<OmpObject>(x.t));
     Walk(std::get<std::optional<OmpDependSinkVecLength>>(x.t));
   }
   void Unparse(const OmpDependClause::InOut &x) {
Index: flang/lib/Parser/openmp-parsers.cpp
===================================================================
--- flang/lib/Parser/openmp-parsers.cpp
+++ flang/lib/Parser/openmp-parsers.cpp
@@ -113,8 +113,8 @@
 TYPE_PARSER(construct<OmpDependSinkVecLength>(
     Parser<DefinedOperator>{}, scalarIntConstantExpr))
 
-TYPE_PARSER(
-    construct<OmpDependSinkVec>(name, maybe(Parser<OmpDependSinkVecLength>{})))
+TYPE_PARSER(construct<OmpDependSinkVec>(
+    Parser<OmpObject>{}, maybe(Parser<OmpDependSinkVecLength>{})))
 
 TYPE_PARSER(
     construct<OmpDependenceType>("IN"_id >> pure(OmpDependenceType::Type::In) ||
Index: flang/include/flang/Parser/parse-tree.h
===================================================================
--- flang/include/flang/Parser/parse-tree.h
+++ flang/include/flang/Parser/parse-tree.h
@@ -3436,7 +3436,7 @@
 // 2.13.9 depend-vec -> iterator [+/- depend-vec-length],...,iterator[...]
 struct OmpDependSinkVec {
   TUPLE_CLASS_BOILERPLATE(OmpDependSinkVec);
-  std::tuple<Name, std::optional<OmpDependSinkVecLength>> t;
+  std::tuple<OmpObject, std::optional<OmpDependSinkVecLength>> t;
 };
 
 // 2.13.9 depend-type -> IN | OUT | INOUT | SOURCE | SINK


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D108530.368019.patch
Type: text/x-patch
Size: 2193 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210823/53a26ee5/attachment.bin>


More information about the llvm-commits mailing list