aboutsummaryrefslogtreecommitdiff
path: root/gcc/coverage.c
diff options
context:
space:
mode:
authorwaffl3x <waffl3x@baylibre.com>2025-05-05 20:20:00 +0000
committerSandra Loosemore <sloosemore@baylibre.com>2025-05-15 20:25:54 +0000
commitac1372b107c14dc7d8b1321391a403f5aab33de2 (patch)
treecff798d96658b243064c0aa20b3753e4546a6790 /gcc/coverage.c
parent983c4ffae6391caa9e2ac16ed1e3495fff2b95bb (diff)
downloadgcc-ac1372b107c14dc7d8b1321391a403f5aab33de2.zip
gcc-ac1372b107c14dc7d8b1321391a403f5aab33de2.tar.gz
gcc-ac1372b107c14dc7d8b1321391a403f5aab33de2.tar.bz2
OpenMP: C/C++ adjust-args numeric ranges
Add support for OpenMP parameter-lists in an adjust_args clause, more specifically, numeric ranges and parameter indices. Many bugs are also fixed along the way. Most of the fixes rely on the changes to handling of clause arguments and can't reasonably be split out, while most of the changes that fix PR119602 came as a side effect of properly handling numeric ranges with dependent bounds so it makes sense to include it here. Variadic arguments with an incorrect type are not currently diagnosed, but handling for them is otherwise functional. It is unclear how references to pointers are supposed to be handled, so for now we sorry for that case. PR c++/119659 PR c++/118859 PR c++/119601 PR c++/119602 PR c++/119775 gcc/c/ChangeLog: * c-parser.cc (c_omp_numeric_ranges_always_overlap): New function. (c_parser_omp_parm_list): New function. (c_finish_omp_declare_variant): Use c_parser_omp_parm_list instead of c_parser_omp_variable_list. Refactor, change format of "omp declare variant variant args" attribute. gcc/cp/ChangeLog: PR c++/119659 PR c++/118859 PR c++/119601 PR c++/119602 PR c++/119775 * cp-tree.h (finish_omp_parm_list): New declaration. (finish_omp_adjust_args): New declaration. * decl.cc (omp_declare_variant_finalize_one): Refactor and change attribute unpacking, use finish_omp_parm_list and finish_omp_adjust_args, refactor append_args diagnostics, add nbase_parms to append_args attribute, remove special handling for member functions. * parser.cc (cp_parser_direct_declarator): Don't pass parms. (cp_parser_late_return_type_opt): Remove parms parameter. (cp_parser_omp_parm_list): New function. (cp_finish_omp_declare_variant): Remove parms parameter. Add NULL_TREE instead of nbase_args to append_args_tree. Refactor, use cp_parser_omp_parm_list not cp_parser_omp_var_list_no_open, handle "need_device_addr" and remove handling and diagnostics of parm list arguments that are done too early. Change format of unnamed variant attribute. (cp_parser_late_parsing_omp_declare_simd): Remove parms parameter. * pt.cc (tsubst_attribute): Copy "omp declare variant base" nodes, substitute parm list numeric range bounds. * semantics.cc (finish_omp_parm_list): New function. (finish_omp_adjust_args): New function. gcc/fortran/ChangeLog: * trans-openmp.cc (gfc_trans_omp_declare_variant): Change format of "omp declare variant variant args" attribute. gcc/ChangeLog: * gimplify.cc (modify_call_for_omp_dispatch): Refactor and change attribute unpacking. For adjust_args variadic functions, expand numeric ranges with relative bounds. Refactor argument adjustment. libgomp/ChangeLog: * libgomp.texi: Set 'adjust args' variadic arguments support to Y. gcc/testsuite/ChangeLog: * c-c++-common/gomp/pr118579.c: Change error text. * g++.dg/gomp/adjust-args-1.C: Fix error text, add dg-* directives. * g++.dg/gomp/adjust-args-2.C: Add dg-* directives. * g++.dg/gomp/append-args-1.C: Add dg-* directives. * gcc.dg/gomp/adjust-args-1.c: Fix error text, add dg-* directives. * gcc.dg/gomp/append-args-1.c: Fix error text, add dg-* directives. * c-c++-common/gomp/adjust-args-7.c: New test. * c-c++-common/gomp/adjust-args-8.c: New test. * c-c++-common/gomp/adjust-args-9.c: New test. * c-c++-common/gomp/adjust-args-10.c: New test. * c-c++-common/gomp/adjust-args-11.c: New test. * c-c++-common/gomp/adjust-args-12.c: New test. * c-c++-common/gomp/adjust-args-13.c: New test. * c-c++-common/gomp/adjust-args-14.c: New test. * c-c++-common/gomp/adjust-args-15.c: New test. * g++.dg/gomp/adjust-args-5.C: New test. * g++.dg/gomp/adjust-args-6.C: New test. * g++.dg/gomp/adjust-args-7.C: New test. * g++.dg/gomp/adjust-args-8.C: New test. * g++.dg/gomp/adjust-args-9.C: New test. * g++.dg/gomp/adjust-args-10.C: New test. * g++.dg/gomp/adjust-args-11.C: New test. * g++.dg/gomp/adjust-args-12.C: New test. * g++.dg/gomp/adjust-args-13.C: New test. * g++.dg/gomp/adjust-args-14.C: New test. * g++.dg/gomp/adjust-args-15.C: New test. * g++.dg/gomp/adjust-args-16.C: New test. * g++.dg/gomp/append-args-9.C: New test. * g++.dg/gomp/append-args-10.C: New test. * g++.dg/gomp/append-args-11.C: New test. * g++.dg/gomp/append-args-omp-interop-t.h: New header. Signed-off-by: Waffl3x <waffl3x@baylibre.com>
Diffstat (limited to 'gcc/coverage.c')
0 files changed, 0 insertions, 0 deletions