OpenMP: Add no_openmp_constructs; improve Fortran clause parsing

Add the assumption clause 'no_openmp_constructs' (which as most assumption
clauses is ignored in the front end - for now).
For Fortran, improve free-form parsing of argument-free clauses
by avoiding substring matches.

gcc/c/ChangeLog:

	* c-parser.cc (c_parser_omp_assumption_clauses): Add
	no_openmp_constructs clause.

gcc/cp/ChangeLog:

	* parser.cc (cp_parser_omp_assumption_clauses): Add
	no_openmp_constructs clause.

gcc/fortran/ChangeLog:

	* dump-parse-tree.cc (show_omp_assumes): Handle
	no_openmp_constructs clause.
	* gfortran.h (struct gfc_omp_assumptions): Add
	no_openmp_constructs.
	* openmp.cc (gfc_match_dupl_check): For free-form
	Fortran, avoid substring matching.
	(gfc_match_omp_clauses): Match no_openmp_constructs clause.
	Remove no longer needed 'needs_space', match 'order' followed by
	parenthesis instead of 'order' with parenthesis; reorder 'order'
	and 'ordering' clauses for free-form Fortran.
	(gfc_match_omp_assumes): Handle no_openmp_constructs clause.

libgomp/ChangeLog:

	* libgomp.texi (OpenMP Implemenation Status): Mark
	no_openmp_constructs as implemented.

gcc/testsuite/ChangeLog:

	* gfortran.dg/goacc/update-if_present-2.f90: Update dg-error.
	* gfortran.dg/gomp/order-8.f90: Likewise.
	* gfortran.dg/gomp/order-9.f90: Likewise.
	* c-c++-common/gomp/assume-5.c: New test.
	* gfortran.dg/gomp/assume-6.f90: New test.
This commit is contained in:
Tobias Burnus
2025-12-18 22:55:40 +01:00
parent f5cda36f16
commit 4d6a437261
11 changed files with 139 additions and 92 deletions

View File

@@ -551,7 +551,7 @@ to address of matching mapped list item per 5.1, Sect. 2.21.7.2 @tab N @tab
@item @code{message} and @code{severity} clauses to @code{parallel} directive
@tab N @tab
@item @code{self_maps} clause to @code{requires} directive @tab Y @tab
@item @code{no_openmp_constructs} assumptions clause @tab N @tab
@item @code{no_openmp_constructs} assumptions clause @tab Y @tab
@item Restriction for @code{ordered} regarding loop-transforming directives
@tab N @tab
@item @code{apply} clause to loop-transforming constructs @tab N @tab