The assumes directive is an OpenMP 5.1 feature that allows the user to
provide assumptions to the optimizer. Assumptions can refer to
directives (absent and contains clauses), expressions (holds
clause), or generic properties (no_openmp_routines, ext_ABCD, ...).
The assumes spelling is used for assumptions in the global scope while
assume is used for executable contexts with an associated structured
block.
This patch only implements the global spellings. While clauses with
arguments are "accepted" by the parser, they will simply be ignored for
now. The implementation lowers the assumptions directly to the
AssumptionAttr.
There is err_omp_no_clause_for_directive defined in Sema. See Sema::ActOnOpenMPTargetDataDirective how to use it, better to reduce the number of diagnostics if possible