[PATCH] D88965: [Flang][OpenMP] Rework parser changes for OpenMP atomic construct.

sameeran joshi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 13 01:22:04 PDT 2020


sameeranjoshi added a comment.

What I understand from your query is, you are basically trying to ask if we are using `OmpClauseList` in parser-tree.h so should all the clauses be allowed on atomic construct, which is not expected and you are trying to find where are the restrictions on the various clauses from `OmpClauseList` on Atomic construct.

In D88965#2326874 <https://reviews.llvm.org/D88965#2326874>, @kiranchandramohan wrote:

> @sameeranjoshi Is it incorrect to assume that the allowed clauses will work because it is handled by tablegen?

IIUC, it's partially correct.
The `allowedClauses` which are currently present in `OMP.td` will work in catching the test cases which don't obey what `OMP.td` has defined.
e.g for test cases with `num_threads` clause, which is not found in `allowedClauses` of `def OMP_Atomic` is caught in parsing stage.

  !!$omp atomic num_threads read
      i = j

Above test is a syntax error.

Now coming to what standard 5.0 says for one of the constraints:

  At most one memory-order-clause may appear on the construct. 

So a test like

  !$omp atomic SEQ_CST SEQ_CST read
       i  = j

Is currently not flagged as semantic error.
The possible reason which Valentine explained me was that "there should be at least a Enter function for each clauses with a CheckAllowed inside `check-omp-structure.cpp`".
And those functions lack in `check-omp-structure.cpp` which was my next patch.

> Like for e.g. will num_threads be accepted as a clause with atomic?

no.

> https://github.com/llvm/llvm-project/blob/1687a8d83b702332c4aae4f2a95d27c16688418d/llvm/include/llvm/Frontend/OpenMP/OMP.td#L444

please correct me If I am still missing something.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D88965/new/

https://reviews.llvm.org/D88965



More information about the llvm-commits mailing list