gcc/libgomp/testsuite
Julian Brown 9316ad3b43 OpenMP/Fortran: Combined directives with map/firstprivate of same symbol
This patch fixes a case where a combined directive (e.g. "!$omp target
parallel ...") contains both a map and a firstprivate clause for the
same variable.  When the combined directive is split into two nested
directives, the outer "target" gets the "map" clause, and the inner
"parallel" gets the "firstprivate" clause, like so:

  !$omp target parallel map(x) firstprivate(x)

  -->

  !$omp target map(x)
    !$omp parallel firstprivate(x)
      ...

When there is no map of the same variable, the firstprivate is distributed
to both directives, e.g. for 'y' in:

  !$omp target parallel map(x) firstprivate(y)

  -->

  !$omp target map(x) firstprivate(y)
    !$omp parallel firstprivate(y)
      ...

This is not a recent regression, but appear to fix a long-standing ICE.
(The included testcase is based on one by Tobias.)

2022-12-06  Julian Brown  <julian@codesourcery.com>

gcc/fortran/
	* trans-openmp.cc (gfc_add_firstprivate_if_unmapped): New function.
	(gfc_split_omp_clauses): Call above.

libgomp/
	* testsuite/libgomp.fortran/combined-directive-splitting-1.f90: New
	test.
2022-12-14 14:11:45 +00:00
..
config Update copyright years. 2022-01-03 10:42:10 +01:00
lib OpenMP: Generate SIMD clones for functions with "declare target" 2022-11-25 18:13:22 +00:00
libgomp.c amdgcn: Support AMD-specific 'isa' traits in OpenMP context selectors 2022-11-30 10:51:42 +01:00
libgomp.c++ OpenMP, C++: Add template support for the has_device_addr clause. 2022-05-16 01:02:50 -07:00
libgomp.c-c++-common OpenMP: omp_get_max_teams, omp_set_num_teams, and omp_{gs}et_teams_thread_limit on offload devices 2022-12-06 06:03:50 -08:00
libgomp.fortran OpenMP/Fortran: Combined directives with map/firstprivate of same symbol 2022-12-14 14:11:45 +00:00
libgomp.graphite Update copyright years. 2022-01-03 10:42:10 +01:00
libgomp.oacc-c [testsuite] Unset 'offload_target' after use 2020-07-24 14:00:43 +02:00
libgomp.oacc-c++ OpenMP/OpenACC struct sibling list gimplification extension and rework 2022-09-14 13:59:55 +00:00
libgomp.oacc-c-c++-common Restore 'libgomp.oacc-c-c++-common/nvptx-sese-1.c' SESE regions checking [PR107195, PR107344] 2022-10-21 11:27:27 +02:00
libgomp.oacc-fortran Support OpenACC 'declare create' with Fortran allocatable arrays, part II [PR106643, PR96668] 2022-11-02 20:51:41 +01:00
libgomp-site-extra.exp.in libgomp/test: Remove a build sysroot fix regression 2020-04-06 23:32:45 +01:00
libgomp-test-support.exp.in libgomp nvptx plugin: Remove '--with-cuda-driver=[...]' etc. configuration option 2022-06-10 17:08:57 +02:00
Makefile.am libgomp/test: Remove a build sysroot fix regression 2020-04-06 23:32:45 +01:00
Makefile.in libgomp nvptx plugin: Remove '--with-cuda-driver=[...]' etc. configuration option 2022-06-10 17:08:57 +02:00