gcc/libgomp
Julian Brown b5476e4c88 OpenMP: lvalue parsing for map/to/from clauses (C)
This patch adds support for parsing general lvalues ("locator list item
types") for OpenMP "map", "to" and "from" clauses to the C front-end,
similar to the previously-posted patch for C++.  Such syntax is permitted
for OpenMP 5.0 and above.  It was previously posted for mainline here:

  https://gcc.gnu.org/pipermail/gcc-patches/2022-December/609038.html

and for the og13 branch here:

  https://gcc.gnu.org/pipermail/gcc-patches/2023-June/623355.html

2024-01-11  Julian Brown  <julian@codesourcery.com>

gcc/c-family/
	* c-pretty-print.cc (c_pretty_printer::postfix_expression,
	c_pretty_printer::expression): Add OMP_ARRAY_SECTION support.

gcc/c/
	* c-parser.cc (c_parser_braced_init, c_parser_conditional_expression):
	Don't allow OpenMP array section.
	(c_parser_postfix_expression): Don't allow array section in statement
	expression.
	(c_parser_postfix_expression_after_primary): Add support for OpenMP
	array section parsing.
	(c_parser_expr_list): Don't allow OpenMP array section here.
	(c_parser_omp_variable_list): Change ALLOW_DEREF parameter to
	MAP_LVALUE.  Support parsing of general lvalues in "map", "to" and
	"from" clauses.
	(c_parser_omp_var_list_parens): Change ALLOW_DEREF parameter to
	MAP_LVALUE.  Update call to c_parser_omp_variable_list.
	(c_parser_oacc_data_clause): Update calls to
	c_parser_omp_var_list_parens.
	(c_parser_omp_clause_reduction): Use OMP_ARRAY_SECTION tree node
	instead of TREE_LIST for array sections.
	(c_parser_omp_target): Allow GOMP_MAP_ATTACH.
	* c-tree.h (c_omp_array_section_p): Add extern declaration.
	(build_omp_array_section): Add prototype.
	* c-typeck.cc (c_omp_array_section_p): Add flag.
	(mark_exp_read): Support OMP_ARRAY_SECTION.
	(build_omp_array_section): Add function.
	(build_external_ref): Tweak error path for OpenMP array sections.
	(handle_omp_array_sections_1): Use OMP_ARRAY_SECTION tree code instead
	of TREE_LIST.  Handle more kinds of expressions.
	(c_oacc_check_attachments): Use OMP_ARRAY_SECTION instead of TREE_LIST
	for array sections.
	(c_finish_omp_clauses): Use OMP_ARRAY_SECTION instead of TREE_LIST.
	Check for supported expression types.

gcc/testsuite/
	* gcc.dg/gomp/bad-array-section-c-1.c: New test.
	* gcc.dg/gomp/bad-array-section-c-2.c: New test.
	* gcc.dg/gomp/bad-array-section-c-3.c: New test.
	* gcc.dg/gomp/bad-array-section-c-4.c: New test.
	* gcc.dg/gomp/bad-array-section-c-5.c: New test.
	* gcc.dg/gomp/bad-array-section-c-6.c: New test.
	* gcc.dg/gomp/bad-array-section-c-7.c: New test.
	* gcc.dg/gomp/bad-array-section-c-8.c: New test.

libgomp/
	* libgomp.texi: C/C++ lvalues are supported now for map/to/from.
	* testsuite/libgomp.c-c++-common/ind-base-4.c: New test.
	* testsuite/libgomp.c-c++-common/unary-ptr-1.c: New test.
2024-01-11 23:42:30 +00:00
..
config Update copyright years. 2024-01-03 12:19:35 +01:00
plugin GCN: Add pre-initial support for gfx1100: 'EF_AMDGPU_MACH_AMDGCN_GFX1100' 2024-01-08 20:46:37 +01:00
testsuite OpenMP: lvalue parsing for map/to/from clauses (C) 2024-01-11 23:42:30 +00:00
.gitattributes
acc_prof.h Update copyright years. 2024-01-03 12:19:35 +01:00
acinclude.m4
aclocal.m4
affinity-fmt.c Update copyright years. 2024-01-03 12:19:35 +01:00
affinity.c Update copyright years. 2024-01-03 12:19:35 +01:00
alloc.c Update copyright years. 2024-01-03 12:19:35 +01:00
allocator.c Update copyright years. 2024-01-03 12:19:35 +01:00
atomic.c Update copyright years. 2024-01-03 12:19:35 +01:00
barrier.c Update copyright years. 2024-01-03 12:19:35 +01:00
basic-allocator.c Update copyright years. 2024-01-03 12:19:35 +01:00
ChangeLog Daily bump. 2024-01-11 00:18:50 +00:00
ChangeLog.graphite
config.h.in
configure libgomp: Fix up FLOCK fallback handling [PR113192] 2024-01-10 13:32:02 +01:00
configure.ac libgomp: Fix up FLOCK fallback handling [PR113192] 2024-01-10 13:32:02 +01:00
configure.tgt
critical.c Update copyright years. 2024-01-03 12:19:35 +01:00
env.c Update copyright years. 2024-01-03 12:19:35 +01:00
error.c Update copyright years. 2024-01-03 12:19:35 +01:00
fortran.c Update copyright years. 2024-01-03 12:19:35 +01:00
hashtab.h Update copyright years. 2024-01-03 12:19:35 +01:00
icv-device.c Update copyright years. 2024-01-03 12:19:35 +01:00
icv.c Update copyright years. 2024-01-03 12:19:35 +01:00
iter.c Update copyright years. 2024-01-03 12:19:35 +01:00
iter_ull.c Update copyright years. 2024-01-03 12:19:35 +01:00
libgomp-plugin.c Update copyright years. 2024-01-03 12:19:35 +01:00
libgomp-plugin.h Update copyright years. 2024-01-03 12:19:35 +01:00
libgomp.h Update copyright years. 2024-01-03 12:19:35 +01:00
libgomp.map OpenMP/Fortran: Implement omp allocators/allocate for ptr/allocatables 2023-12-08 15:18:25 +01:00
libgomp.spec.in
libgomp.texi OpenMP: lvalue parsing for map/to/from clauses (C) 2024-01-11 23:42:30 +00:00
libgomp_f.h.in Update copyright years. 2024-01-03 12:19:35 +01:00
libgomp_g.h Update copyright years. 2024-01-03 12:19:35 +01:00
lock.c Update copyright years. 2024-01-03 12:19:35 +01:00
loop.c Update copyright years. 2024-01-03 12:19:35 +01:00
loop_ull.c Update copyright years. 2024-01-03 12:19:35 +01:00
Makefile.am openmp: Add support for the 'indirect' clause in C/C++ 2023-11-07 15:44:50 +00:00
Makefile.in Update copyright years. 2024-01-05 08:54:28 +01:00
oacc-async.c Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-cuda.c Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-host.c Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-init.c Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-int.h Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-mem.c Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-parallel.c Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-plugin.c Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-plugin.h Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-profiling.c Update copyright years. 2024-01-03 12:19:35 +01:00
oacc-target.c
omp.h.in Update copyright years. 2024-01-03 12:19:35 +01:00
omp_lib.f90.in Update copyright years. 2024-01-03 12:19:35 +01:00
omp_lib.h.in Update copyright years. 2024-01-03 12:19:35 +01:00
openacc.f90 Update copyright years. 2024-01-03 12:19:35 +01:00
openacc.h Update copyright years. 2024-01-03 12:19:35 +01:00
openacc_lib.h Update copyright years. 2024-01-03 12:19:35 +01:00
ordered.c Update copyright years. 2024-01-03 12:19:35 +01:00
parallel.c Update copyright years. 2024-01-03 12:19:35 +01:00
priority_queue.c Update copyright years. 2024-01-03 12:19:35 +01:00
priority_queue.h Update copyright years. 2024-01-03 12:19:35 +01:00
scope.c Update copyright years. 2024-01-03 12:19:35 +01:00
sections.c Update copyright years. 2024-01-03 12:19:35 +01:00
secure_getenv.h Update copyright years. 2024-01-03 12:19:35 +01:00
single.c Update copyright years. 2024-01-03 12:19:35 +01:00
splay-tree.c Update copyright years. 2024-01-03 12:19:35 +01:00
splay-tree.h Update copyright years. 2024-01-03 12:19:35 +01:00
target-indirect.c Update copyright years. 2024-01-03 12:19:35 +01:00
target.c Update copyright years. 2024-01-03 12:19:35 +01:00
task.c Update copyright years. 2024-01-03 12:19:35 +01:00
taskloop.c Update copyright years. 2024-01-03 12:19:35 +01:00
team.c Update copyright years. 2024-01-03 12:19:35 +01:00
teams.c Update copyright years. 2024-01-03 12:19:35 +01:00
work.c Update copyright years. 2024-01-03 12:19:35 +01:00