-
- Downloads
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.
Showing
- gcc/c-family/c-pretty-print.cc 12 additions, 0 deletionsgcc/c-family/c-pretty-print.cc
- gcc/c/c-parser.cc 139 additions, 16 deletionsgcc/c/c-parser.cc
- gcc/c/c-tree.h 2 additions, 0 deletionsgcc/c/c-tree.h
- gcc/c/c-typeck.cc 88 additions, 21 deletionsgcc/c/c-typeck.cc
- gcc/testsuite/gcc.dg/gomp/bad-array-section-c-1.c 16 additions, 0 deletionsgcc/testsuite/gcc.dg/gomp/bad-array-section-c-1.c
- gcc/testsuite/gcc.dg/gomp/bad-array-section-c-2.c 13 additions, 0 deletionsgcc/testsuite/gcc.dg/gomp/bad-array-section-c-2.c
- gcc/testsuite/gcc.dg/gomp/bad-array-section-c-3.c 24 additions, 0 deletionsgcc/testsuite/gcc.dg/gomp/bad-array-section-c-3.c
- gcc/testsuite/gcc.dg/gomp/bad-array-section-c-4.c 26 additions, 0 deletionsgcc/testsuite/gcc.dg/gomp/bad-array-section-c-4.c
- gcc/testsuite/gcc.dg/gomp/bad-array-section-c-5.c 15 additions, 0 deletionsgcc/testsuite/gcc.dg/gomp/bad-array-section-c-5.c
- gcc/testsuite/gcc.dg/gomp/bad-array-section-c-6.c 16 additions, 0 deletionsgcc/testsuite/gcc.dg/gomp/bad-array-section-c-6.c
- gcc/testsuite/gcc.dg/gomp/bad-array-section-c-7.c 26 additions, 0 deletionsgcc/testsuite/gcc.dg/gomp/bad-array-section-c-7.c
- gcc/testsuite/gcc.dg/gomp/bad-array-section-c-8.c 21 additions, 0 deletionsgcc/testsuite/gcc.dg/gomp/bad-array-section-c-8.c
- libgomp/libgomp.texi 1 addition, 1 deletionlibgomp/libgomp.texi
- libgomp/testsuite/libgomp.c-c++-common/ind-base-4.c 50 additions, 0 deletionslibgomp/testsuite/libgomp.c-c++-common/ind-base-4.c
- libgomp/testsuite/libgomp.c-c++-common/unary-ptr-1.c 16 additions, 0 deletionslibgomp/testsuite/libgomp.c-c++-common/unary-ptr-1.c
Loading
Please register or sign in to comment