gcc/libgomp
Frederik Harwath 5d183d1740 Warn about inconsistent OpenACC nested reduction clauses
OpenACC (cf. OpenACC 2.7, section 2.9.11. "reduction clause";
	this was first clarified by OpenACC 2.6) requires that, if a
	variable is used in reduction clauses on two nested loops, then
	there must be reduction clauses for that variable on all loops
	that are nested in between the two loops and all these reduction
	clauses must use the same operator.
	This commit introduces a check for that property which reports
	warnings if it is violated.

	2019-11-06  Gergö Barany  <gergo@codesourcery.com>
	            Frederik Harwath  <frederik@codesourcery.com>
	            Thomas Schwinge  <thomas@codesourcery.com>

	gcc/
	* omp-low.c (struct omp_context): New fields
	local_reduction_clauses, outer_reduction_clauses.
	(new_omp_context): Initialize these.
	(scan_sharing_clauses): Record reduction clauses on OpenACC constructs.
	(scan_omp_for): Check reduction clauses for incorrect nesting.
	gcc/testsuite/
	* c-c++-common/goacc/nested-reductions-warn.c: New test.
	* c-c++-common/goacc/nested-reductions.c: New test.
	* gfortran.dg/goacc/nested-reductions-warn.f90: New test.
	* gfortran.dg/goacc/nested-reductions.f90: New test.
	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c:
	Add expected warnings about missing reduction clauses.
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c:
	Likewise.

	Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r277875
2019-11-06 10:43:52 +00:00
..
config
plugin configure.ac: Remove GCC_HEADER_STDINT(gstdint.h). 2019-10-01 09:51:46 +02:00
testsuite Warn about inconsistent OpenACC nested reduction clauses 2019-11-06 10:43:52 +00:00
acc_prof.h OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
acinclude.m4 re PR other/79543 (Inappropriate "ld --version" checking) 2019-09-03 14:10:26 +00:00
aclocal.m4 configure.ac: Remove GCC_HEADER_STDINT(gstdint.h). 2019-10-01 09:51:46 +02:00
affinity-fmt.c
affinity.c
alloc.c re PR libgomp/90527 (alloc.c:72:7: error: implicit declaration of function ‘posix_memalign’) 2019-05-20 23:29:17 +02:00
atomic.c
barrier.c
ChangeLog Warn about inconsistent OpenACC nested reduction clauses 2019-11-06 10:43:52 +00:00
ChangeLog.graphite
config.h.in configure.ac: Remove GCC_HEADER_STDINT(gstdint.h). 2019-10-01 09:51:46 +02:00
configure configure.ac: Remove GCC_HEADER_STDINT(gstdint.h). 2019-10-01 09:51:46 +02:00
configure.ac configure.ac: Remove GCC_HEADER_STDINT(gstdint.h). 2019-10-01 09:51:46 +02:00
configure.tgt
critical.c
env.c OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
error.c
fortran.c
hashtab.h
icv-device.c
icv.c
iter_ull.c
iter.c
libgomp_f.h.in
libgomp_g.h libgomp_g.h: Include stdint.h instead of gstdint.h. 2019-09-30 16:16:34 +02:00
libgomp-plugin.c
libgomp-plugin.h 2019-05-13 Chung-Lin Tang <cltang@codesourcery.com> 2019-05-13 13:32:00 +00:00
libgomp.h Libgomp magic offset value self-documentation 2019-10-03 17:48:36 +00:00
libgomp.map OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
libgomp.spec.in
libgomp.texi OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
lock.c
loop_ull.c re PR libgomp/90641 (libgomp.c-c++-common/lastprivate-conditional-1.c etc FAIL) 2019-05-27 23:27:00 +02:00
loop.c re PR libgomp/90641 (libgomp.c-c++-common/lastprivate-conditional-1.c etc FAIL) 2019-05-27 23:27:00 +02:00
Makefile.am OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
Makefile.in configure.ac: Remove GCC_HEADER_STDINT(gstdint.h). 2019-10-01 09:51:46 +02:00
oacc-async.c OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
oacc-cuda.c re PR libgomp/90585 (libgomp hsa plugin ftbfs in the x32 multilib variant) 2019-05-24 10:59:37 +02:00
oacc-host.c re PR libgomp/90585 (libgomp hsa plugin ftbfs in the x32 multilib variant) 2019-05-24 10:59:37 +02:00
oacc-init.c OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
oacc-int.h OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
oacc-mem.c re PR libgomp/90585 (libgomp hsa plugin ftbfs in the x32 multilib variant) 2019-05-24 10:59:37 +02:00
oacc-parallel.c configure.ac: Remove GCC_HEADER_STDINT(gstdint.h). 2019-10-01 09:51:46 +02:00
oacc-plugin.c OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
oacc-plugin.h OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
oacc-profiling.c OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
omp_lib.f90.in
omp_lib.h.in
omp.h.in
openacc_lib.h
openacc.f90
openacc.h
ordered.c
parallel.c
priority_queue.c
priority_queue.h
sections.c re PR libgomp/90641 (libgomp.c-c++-common/lastprivate-conditional-1.c etc FAIL) 2019-05-27 23:27:00 +02:00
secure_getenv.h
single.c
splay-tree.c
splay-tree.h
target.c re PR libgomp/92028 (OpenACC 'host_data' execution test regressions with nvptx offloading) 2019-10-09 09:33:02 +02:00
task.c
taskloop.c
team.c team.c (gomp_team_start): Initialize pool->threads[0]. 2019-03-27 18:30:44 +00:00
teams.c
work.c re PR libgomp/90641 (libgomp.c-c++-common/lastprivate-conditional-1.c etc FAIL) 2019-05-27 23:27:00 +02:00