gcc/libgomp
Jakub Jelinek 7f78783dbe openmp: Add omp_all_memory support (C/C++ only so far)
The ugly part is that OpenMP 5.1 made omp_all_memory a reserved identifier
which isn't allowed to be used anywhere but in the depend clause, this is
against how everything else has been handled in OpenMP so far (where
some identifiers could have special meaning in some OpenMP clauses or
pragmas but not elsewhere).
The patch handles it by making it a conditional keyword (for -fopenmp
only) and emitting a better diagnostics when it is used in a primary
expression.  Having a nicer diagnostics when e.g. trying to do
int omp_all_memory;
or
int *omp_all_memory[10];
etc. would mean changing too many spots and hooking into name lookups
to reject declaring any such symbols would be too ugly and I'm afraid
there are way too many spots where one can introduce a name
(variables, functions, namespaces, struct, enum, enumerators, template
arguments, ...).

Otherwise, the handling is quite simple, normal depend clauses lower
into addresses of variables being handed over to the library, for
omp_all_memory I'm using NULL pointers.  omp_all_memory can only be
used with inout or out depend kinds and means that a task is dependent
on all previously created sibling tasks that have any dependency (of
any depend kind) and that any later created sibling tasks will be
dependent on it if they have any dependency.

2022-05-12  Jakub Jelinek  <jakub@redhat.com>

gcc/
	* gimplify.cc (gimplify_omp_depend): Don't build_fold_addr_expr
	if null_pointer_node.
	(gimplify_scan_omp_clauses): Likewise.
	* tree-pretty-print.cc (dump_omp_clause): Print null_pointer_node
	as omp_all_memory.
gcc/c-family/
	* c-common.h (enum rid): Add RID_OMP_ALL_MEMORY.
	* c-omp.cc (c_finish_omp_depobj): Don't build_fold_addr_expr
	if null_pointer_node.
gcc/c/
	* c-parser.cc (c_parse_init): Register omp_all_memory as keyword
	if flag_openmp.
	(c_parser_postfix_expression): Diagnose uses of omp_all_memory
	in postfix expressions.
	(c_parser_omp_variable_list): Handle omp_all_memory in depend
	clause.
	* c-typeck.cc (c_finish_omp_clauses): Handle omp_all_memory
	keyword in depend clause as null_pointer_node, diagnose invalid
	uses.
gcc/cp/
	* lex.cc (init_reswords): Register omp_all_memory as keyword
	if flag_openmp.
	* parser.cc (cp_parser_primary_expression): Diagnose uses of
	omp_all_memory in postfix expressions.
	(cp_parser_omp_var_list_no_open): Handle omp_all_memory in depend
	clause.
	* semantics.cc (finish_omp_clauses): Handle omp_all_memory
	keyword in depend clause as null_pointer_node, diagnose invalid
	uses.
	* pt.cc (tsubst_omp_clause_decl): Pass through omp_all_memory.
gcc/testsuite/
	* c-c++-common/gomp/all-memory-1.c: New test.
	* c-c++-common/gomp/all-memory-2.c: New test.
	* c-c++-common/gomp/all-memory-3.c: New test.
	* g++.dg/gomp/all-memory-1.C: New test.
	* g++.dg/gomp/all-memory-2.C: New test.
libgomp/
	* libgomp.h (struct gomp_task): Add depend_all_memory member.
	* task.c (gomp_init_task): Initialize depend_all_memory.
	(gomp_task_handle_depend): Handle omp_all_memory.
	(gomp_task_run_post_handle_depend_hash): Clear
	parent->depend_all_memory if equal to current task.
	(gomp_task_maybe_wait_for_dependencies): Handle omp_all_memory.
	* testsuite/libgomp.c-c++-common/depend-1.c: New test.
	* testsuite/libgomp.c-c++-common/depend-2.c: New test.
	* testsuite/libgomp.c-c++-common/depend-3.c: New test.
2022-05-12 08:31:20 +02:00
..
config openmp: Fix up gomp_affinity_init_numa_domains 2022-03-18 11:02:13 +01:00
plugin libgomp: Remove unused '--with-hsa-runtime', '--with-hsa-runtime-include', '--with-hsa-runtime-lib' 2022-05-11 14:27:42 +02:00
testsuite openmp: Add omp_all_memory support (C/C++ only so far) 2022-05-12 08:31:20 +02:00
.gitattributes
acc_prof.h Update copyright years. 2022-01-03 10:42:10 +01:00
acinclude.m4 Add mold detection for libs. 2022-01-31 09:46:44 +01:00
aclocal.m4
affinity-fmt.c Update copyright years. 2022-01-03 10:42:10 +01:00
affinity.c Update copyright years. 2022-01-03 10:42:10 +01:00
alloc.c Update copyright years. 2022-01-03 10:42:10 +01:00
allocator.c Update copyright years. 2022-01-03 10:42:10 +01:00
atomic.c Update copyright years. 2022-01-03 10:42:10 +01:00
barrier.c Update copyright years. 2022-01-03 10:42:10 +01:00
ChangeLog Daily bump. 2022-05-12 00:16:36 +00:00
ChangeLog.graphite
config.h.in offload-defaulted: Config option to silently ignore uninstalled offload compilers 2021-04-28 18:46:47 +02:00
configure libgomp: Remove unused '--with-hsa-runtime', '--with-hsa-runtime-include', '--with-hsa-runtime-lib' 2022-05-11 14:27:42 +02:00
configure.ac make -Werror optional in libatomic/libbacktrace/libgomp/libitm/libsanitizer 2022-02-03 16:10:18 +01:00
configure.tgt LoongArch Port: libgomp 2022-03-29 17:43:35 +08:00
critical.c Update copyright years. 2022-01-03 10:42:10 +01:00
env.c Update copyright years. 2022-01-03 10:42:10 +01:00
error.c Update copyright years. 2022-01-03 10:42:10 +01:00
fortran.c OpenMP, Fortran: Bugfix for omp_set_num_teams. 2022-03-16 07:38:54 -07:00
hashtab.h Update copyright years. 2022-01-03 10:42:10 +01:00
icv-device.c Update copyright years. 2022-01-03 10:42:10 +01:00
icv.c Update copyright years. 2022-01-03 10:42:10 +01:00
iter_ull.c Update copyright years. 2022-01-03 10:42:10 +01:00
iter.c Update copyright years. 2022-01-03 10:42:10 +01:00
libgomp_f.h.in Update copyright years. 2022-01-03 10:42:10 +01:00
libgomp_g.h Update copyright years. 2022-01-03 10:42:10 +01:00
libgomp-plugin.c Update copyright years. 2022-01-03 10:42:10 +01:00
libgomp-plugin.h Update copyright years. 2022-01-03 10:42:10 +01:00
libgomp.h openmp: Add omp_all_memory support (C/C++ only so far) 2022-05-12 08:31:20 +02:00
libgomp.map OpenMP, libgomp: Add new runtime routine omp_target_is_accessible. 2022-05-06 07:28:26 -07:00
libgomp.spec.in
libgomp.texi OpenMP, libgomp: Add new runtime routine omp_target_is_accessible. 2022-05-06 07:28:26 -07:00
lock.c Update copyright years. 2022-01-03 10:42:10 +01:00
loop_ull.c libgomp: Fix up two non-GOMP_USE_ALIGNED_WORK_SHARES related issues [PR105358] 2022-04-26 08:57:17 +02:00
loop.c libgomp: Fix up two non-GOMP_USE_ALIGNED_WORK_SHARES related issues [PR105358] 2022-04-26 08:57:17 +02:00
Makefile.am openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
Makefile.in libgomp: Remove unused '--with-hsa-runtime', '--with-hsa-runtime-include', '--with-hsa-runtime-lib' 2022-05-11 14:27:42 +02:00
oacc-async.c Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-cuda.c Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-host.c Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-init.c Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-int.h Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-mem.c Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-parallel.c Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-plugin.c Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-plugin.h Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-profiling.c Update copyright years. 2022-01-03 10:42:10 +01:00
oacc-target.c
omp_lib.f90.in OpenMP, libgomp: Add new runtime routine omp_target_is_accessible. 2022-05-06 07:28:26 -07:00
omp_lib.h.in OpenMP, libgomp: Add new runtime routine omp_target_is_accessible. 2022-05-06 07:28:26 -07:00
omp.h.in OpenMP, libgomp: Add new runtime routine omp_target_is_accessible. 2022-05-06 07:28:26 -07:00
openacc_lib.h Update copyright years. 2022-01-03 10:42:10 +01:00
openacc.f90 Update copyright years. 2022-01-03 10:42:10 +01:00
openacc.h Update copyright years. 2022-01-03 10:42:10 +01:00
ordered.c Update copyright years. 2022-01-03 10:42:10 +01:00
parallel.c Update copyright years. 2022-01-03 10:42:10 +01:00
priority_queue.c Update copyright years. 2022-01-03 10:42:10 +01:00
priority_queue.h Update copyright years. 2022-01-03 10:42:10 +01:00
scope.c Update copyright years. 2022-01-03 10:42:10 +01:00
sections.c libgomp: Fix up two non-GOMP_USE_ALIGNED_WORK_SHARES related issues [PR105358] 2022-04-26 08:57:17 +02:00
secure_getenv.h Update copyright years. 2022-01-03 10:42:10 +01:00
single.c Update copyright years. 2022-01-03 10:42:10 +01:00
splay-tree.c Update copyright years. 2022-01-03 10:42:10 +01:00
splay-tree.h Update copyright years. 2022-01-03 10:42:10 +01:00
target.c OpenMP, libgomp: Add new runtime routine omp_target_is_accessible. 2022-05-06 07:28:26 -07:00
task.c openmp: Add omp_all_memory support (C/C++ only so far) 2022-05-12 08:31:20 +02:00
taskloop.c Update copyright years. 2022-01-03 10:42:10 +01:00
team.c Update copyright years. 2022-01-03 10:42:10 +01:00
teams.c Update copyright years. 2022-01-03 10:42:10 +01:00
work.c libgomp: Fix up two non-GOMP_USE_ALIGNED_WORK_SHARES related issues [PR105358] 2022-04-26 08:57:17 +02:00