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 libgomp: Reduce copy and paste for RTEMS 2019-01-09 06:16:05 +00:00
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 Update copyright years. 2019-01-01 13:31:55 +01:00
affinity.c Update copyright years. 2019-01-01 13:31:55 +01:00
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 Update copyright years. 2019-01-01 13:31:55 +01:00
barrier.c Update copyright years. 2019-01-01 13:31:55 +01:00
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 builtin-types.def (BT_FN_VOID_BOOL, [...]): New. 2018-11-08 18:13:04 +01:00
critical.c Update copyright years. 2019-01-01 13:31:55 +01:00
env.c OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
error.c Update copyright years. 2019-01-01 13:31:55 +01:00
fortran.c Update copyright years. 2019-01-01 13:31:55 +01:00
hashtab.h Update copyright years. 2019-01-01 13:31:55 +01:00
icv-device.c Update copyright years. 2019-01-01 13:31:55 +01:00
icv.c Update copyright years. 2019-01-01 13:31:55 +01:00
iter_ull.c Update copyright years. 2019-01-01 13:31:55 +01:00
iter.c Update copyright years. 2019-01-01 13:31:55 +01:00
libgomp_f.h.in Update copyright years. 2019-01-01 13:31:55 +01:00
libgomp_g.h libgomp_g.h: Include stdint.h instead of gstdint.h. 2019-09-30 16:16:34 +02:00
libgomp-plugin.c Update copyright years. 2019-01-01 13:31:55 +01:00
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 Generally link to libgomp for -ftree-parallelize-loops=*. 2013-11-07 16:07:34 +01:00
libgomp.texi OpenACC Profiling Interface (incomplete) 2019-05-17 21:13:36 +02:00
lock.c Update copyright years. 2019-01-01 13:31:55 +01:00
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 Update copyright years. 2019-01-01 13:31:55 +01:00
omp_lib.h.in Update copyright years. 2019-01-01 13:31:55 +01:00
omp.h.in Update copyright years. 2019-01-01 13:31:55 +01:00
openacc_lib.h Update copyright years. 2019-01-01 13:31:55 +01:00
openacc.f90 Update copyright years. 2019-01-01 13:31:55 +01:00
openacc.h Update copyright years. 2019-01-01 13:31:55 +01:00
ordered.c Update copyright years. 2019-01-01 13:31:55 +01:00
parallel.c Update copyright years. 2019-01-01 13:31:55 +01:00
priority_queue.c Update copyright years. 2019-01-01 13:31:55 +01:00
priority_queue.h Update copyright years. 2019-01-01 13:31:55 +01:00
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 Update copyright years. 2019-01-01 13:31:55 +01:00
single.c Update copyright years. 2019-01-01 13:31:55 +01:00
splay-tree.c Update copyright years. 2019-01-01 13:31:55 +01:00
splay-tree.h Update copyright years. 2019-01-01 13:31:55 +01:00
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 Update copyright years. 2019-01-01 13:31:55 +01:00
taskloop.c Update copyright years. 2019-01-01 13:31:55 +01:00
team.c team.c (gomp_team_start): Initialize pool->threads[0]. 2019-03-27 18:30:44 +00:00
teams.c Update copyright years. 2019-01-01 13:31:55 +01:00
work.c re PR libgomp/90641 (libgomp.c-c++-common/lastprivate-conditional-1.c etc FAIL) 2019-05-27 23:27:00 +02:00