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

--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Thomas Schwinge <tschwi...@gcc.gnu.org>:

https://gcc.gnu.org/g:9b32c1669aad5459dd053424f9967011348add83

commit r12-6542-g9b32c1669aad5459dd053424f9967011348add83
Author: Thomas Schwinge <tho...@codesourcery.com>
Date:   Thu Dec 16 22:02:37 2021 +0100

    OpenACC 'kernels' decomposition: Mark variables used in synthesized data
clauses as addressable [PR100280]

    ... as otherwise 'gcc/omp-low.c:lower_omp_target' has to create a
temporary:

        13073                       else if (is_gimple_reg (var))
        13074                         {
        13075                           gcc_assert (offloaded);
        13076                           tree avar = create_tmp_var (TREE_TYPE
(var));
        13077                           mark_addressable (avar);

    ..., which (a) is only implemented for actualy *offloaded* regions (but not
    data regions), and (b) the subsequently synthesized code for writing to and
    later reading back from the temporary fundamentally conflicts with OpenACC
    'async' (as used by OpenACC 'kernels' decomposition).  That's all not
trivial
    to make work, so let's just avoid this case.

            gcc/
            PR middle-end/100280
            * omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
            Mark variables used in synthesized data clauses as addressable.
            gcc/testsuite/
            PR middle-end/100280
            * c-c++-common/goacc/kernels-decompose-pr100280-1.c: New.
            * c-c++-common/goacc/classify-kernels-parloops.c: Likewise.
            * c-c++-common/goacc/classify-kernels-unparallelized-parloops.c:
            Likewise.
            * c-c++-common/goacc/classify-kernels-unparallelized.c: Test
            '--param openacc-kernels=decompose'.
            * c-c++-common/goacc/classify-kernels.c: Likewise.
            * c-c++-common/goacc/kernels-decompose-2.c: Update.
            * c-c++-common/goacc/kernels-decompose-ice-1.c: Remove.
            * c-c++-common/goacc/kernels-decompose-ice-2.c: Likewise.
            * gfortran.dg/goacc/classify-kernels-parloops.f95: New.
            * gfortran.dg/goacc/classify-kernels-unparallelized-parloops.f95:
            Likewise.
            * gfortran.dg/goacc/classify-kernels-unparallelized.f95: Test
            '--param openacc-kernels=decompose'.
            * gfortran.dg/goacc/classify-kernels.f95: Likewise.
            libgomp/
            PR middle-end/100280
            *
testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c:
            Update.
            * testsuite/libgomp.oacc-c-c++-common/f-asyncwait-1.c: Likewise.
            * testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c:
            Likewise.

    Suggested-by: Julian Brown <jul...@codesourcery.com>

Reply via email to