public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/92120] OpenMP 5 – implicit mapping of this->member variable access – "this[:1]" shall be mapped
       [not found] <bug-92120-4@http.gcc.gnu.org/bugzilla/>
@ 2021-12-08 14:29 ` cvs-commit at gcc dot gnu.org
  2021-12-09 13:29 ` tschwinge at gcc dot gnu.org
  2024-04-04 20:54 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 3+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-12-08 14:29 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92120

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Chung-Lin Tang <cltang@gcc.gnu.org>:

https://gcc.gnu.org/g:0ab29cf0bb68960c1f87405f14b4fb2109254e2f

commit r12-5835-g0ab29cf0bb68960c1f87405f14b4fb2109254e2f
Author: Chung-Lin Tang <cltang@codesourcery.com>
Date:   Wed Dec 8 22:28:03 2021 +0800

    openmp: Improve OpenMP target support for C++ (PR92120)

    This patch implements several C++ specific mapping capabilities introduced
for
    OpenMP 5.0, including implicit mapping of this[:1] for non-static member
    functions, zero-length array section mapping of pointer-typed members,
    lambda captured variable access in target regions, and use of lambda
objects
    inside target regions.

    Several adjustments to the C/C++ front-ends to allow more member-access
syntax
    as valid is also included.

            PR middle-end/92120

    gcc/cp/ChangeLog:

            * cp-tree.h (finish_omp_target): New declaration.
            (finish_omp_target_clauses): Likewise.
            * parser.c (cp_parser_omp_clause_map): Adjust call to
            cp_parser_omp_var_list_no_open to set 'allow_deref' argument to
true.
            (cp_parser_omp_target): Factor out code, adjust into calls to new
            function finish_omp_target.
            * pt.c (tsubst_expr): Add call to finish_omp_target_clauses for
            OMP_TARGET case.
            * semantics.c (handle_omp_array_sections_1): Add handling to create
            'this->member' from 'member' FIELD_DECL. Remove case of rejecting
            'this' when not in declare simd.
            (handle_omp_array_sections): Likewise.
            (finish_omp_clauses): Likewise. Adjust to allow 'this[]' in OpenMP
            map clauses. Handle 'A->member' case in map clauses. Remove case of
            rejecting 'this' when not in declare simd.
            (struct omp_target_walk_data): New struct for walking over
            target-directive tree body.
            (finish_omp_target_clauses_r): New function for tree walk.
            (finish_omp_target_clauses): New function.
            (finish_omp_target): New function.

    gcc/c/ChangeLog:

            * c-parser.c (c_parser_omp_clause_map): Set 'allow_deref' argument
in
            call to c_parser_omp_variable_list to 'true'.
            * c-typeck.c (handle_omp_array_sections_1): Add strip of MEM_REF in
            array base handling.
            (c_finish_omp_clauses): Handle 'A->member' case in map clauses.

    gcc/ChangeLog:

            * gimplify.c ("tree-hash-traits.h"): Add include.
            (gimplify_scan_omp_clauses): Change struct_map_to_clause to type
            hash_map<tree_operand, tree> *. Adjust struct map handling to
handle
            cases of *A and A->B expressions. Under !DECL_P case of
            GOMP_CLAUSE_MAP handling, add STRIP_NOPS for indir_p case, add to
            struct_deref_set for map(*ptr_to_struct) cases. Add MEM_REF case
when
            handling component_ref_p case. Add unshare_expr and gimplification
            when created GOMP_MAP_STRUCT is not a DECL. Add code to add
            firstprivate pointer for *pointer-to-struct case.
            (gimplify_adjust_omp_clauses): Move GOMP_MAP_STRUCT removal code
for
            exit data directives code to earlier position.
            * omp-low.c (lower_omp_target):
            Handle GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION, and
            GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION map kinds.
            * tree-pretty-print.c (dump_omp_clause): Likewise.

    gcc/testsuite/ChangeLog:

            * gcc.dg/gomp/target-3.c: New testcase.
            * g++.dg/gomp/target-3.C: New testcase.
            * g++.dg/gomp/target-lambda-1.C: New testcase.
            * g++.dg/gomp/target-lambda-2.C: New testcase.
            * g++.dg/gomp/target-this-1.C: New testcase.
            * g++.dg/gomp/target-this-2.C: New testcase.
            * g++.dg/gomp/target-this-3.C: New testcase.
            * g++.dg/gomp/target-this-4.C: New testcase.
            * g++.dg/gomp/target-this-5.C: New testcase.
            * g++.dg/gomp/this-2.C: Adjust testcase.

    include/ChangeLog:

            * gomp-constants.h (enum gomp_map_kind):
            Add GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION, and
            GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION map kinds.
            (GOMP_MAP_POINTER_P):
            Include GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION.

    libgomp/ChangeLog:

            * libgomp.h (gomp_attach_pointer): Add bool parameter.
            * oacc-mem.c (acc_attach_async): Update call to
gomp_attach_pointer.
            (goacc_enter_data_internal): Likewise.
            * target.c (gomp_map_vars_existing): Update assert condition to
            include GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION.
            (gomp_map_pointer): Add 'bool allow_zero_length_array_sections'
            parameter, add support for mapping a pointer with NULL target.
            (gomp_attach_pointer): Add 'bool allow_zero_length_array_sections'
            parameter, add support for attaching a pointer with NULL target.
            (gomp_map_vars_internal): Update calls to gomp_map_pointer and
            gomp_attach_pointer, add handling for
            GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION, and
            GOMP_MAP_POINTER_TO_ZERO_LENGTH_ARRAY_SECTION cases.
            * testsuite/libgomp.c++/target-23.C: New testcase.
            * testsuite/libgomp.c++/target-lambda-1.C: New testcase.
            * testsuite/libgomp.c++/target-lambda-2.C: New testcase.
            * testsuite/libgomp.c++/target-this-1.C: New testcase.
            * testsuite/libgomp.c++/target-this-2.C: New testcase.
            * testsuite/libgomp.c++/target-this-3.C: New testcase.
            * testsuite/libgomp.c++/target-this-4.C: New testcase.
            * testsuite/libgomp.c++/target-this-5.C: New testcase.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug middle-end/92120] OpenMP 5 – implicit mapping of this->member variable access – "this[:1]" shall be mapped
       [not found] <bug-92120-4@http.gcc.gnu.org/bugzilla/>
  2021-12-08 14:29 ` [Bug middle-end/92120] OpenMP 5 – implicit mapping of this->member variable access – "this[:1]" shall be mapped cvs-commit at gcc dot gnu.org
@ 2021-12-09 13:29 ` tschwinge at gcc dot gnu.org
  2024-04-04 20:54 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 3+ messages in thread
From: tschwinge at gcc dot gnu.org @ 2021-12-09 13:29 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92120

Thomas Schwinge <tschwinge at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |cltang at gcc dot gnu.org
                 CC|                            |tschwinge at gcc dot gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #4 from Thomas Schwinge <tschwinge at gcc dot gnu.org> ---
Without offloading, a few of the new test cases FAIL; please adjust:

    +PASS: libgomp.c++/target-lambda-1.C (test for excess errors)
    +FAIL: libgomp.c++/target-lambda-1.C execution test

    +PASS: libgomp.c++/target-this-3.C (test for excess errors)
    +FAIL: libgomp.c++/target-this-3.C execution test

    +PASS: libgomp.c++/target-this-4.C (test for excess errors)
    +FAIL: libgomp.c++/target-this-4.C execution test

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug middle-end/92120] OpenMP 5 – implicit mapping of this->member variable access – "this[:1]" shall be mapped
       [not found] <bug-92120-4@http.gcc.gnu.org/bugzilla/>
  2021-12-08 14:29 ` [Bug middle-end/92120] OpenMP 5 – implicit mapping of this->member variable access – "this[:1]" shall be mapped cvs-commit at gcc dot gnu.org
  2021-12-09 13:29 ` tschwinge at gcc dot gnu.org
@ 2024-04-04 20:54 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 3+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-04-04 20:54 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92120

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
   Target Milestone|---                         |12.0
         Resolution|---                         |FIXED

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Fixed.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-04-04 20:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-92120-4@http.gcc.gnu.org/bugzilla/>
2021-12-08 14:29 ` [Bug middle-end/92120] OpenMP 5 – implicit mapping of this->member variable access – "this[:1]" shall be mapped cvs-commit at gcc dot gnu.org
2021-12-09 13:29 ` tschwinge at gcc dot gnu.org
2024-04-04 20:54 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).