[Bug middle-end/98183] [8/9/10/11 Regression] ICE in expand_gimple_stmt_1, at cfgexpand.c:3972

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Dec 12 07:43:55 GMT 2020


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

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:cc9b9c0b68233d38a26f7acd68cc5f9a8fc4d994

commit r11-5956-gcc9b9c0b68233d38a26f7acd68cc5f9a8fc4d994
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Sat Dec 12 08:36:02 2020 +0100

    openmp, openacc: Fix up handling of data regions [PR98183]

    While the data regions (target data and OpenACC counterparts) aren't
    standalone directives, unlike most other OpenMP/OpenACC constructs
    we allow (apparently as an extension) exceptions and goto out of
    the block. During gimplification we place an *end* call into a finally
    block so that it is reached even on exceptions or goto out etc.).
    During omplower pass we then add paired #pragma omp return for them,
    but due to the exceptions because the region is not SESE we can end up
    with #pragma omp return appearing only conditionally in the CFG etc.,
    which the ompexp pass can't handle.
    For the ompexp pass, we actually don't care about the end part or about
    target data nesting, so we can treat it as standalone directive.

    2020-12-12  Jakub Jelinek  <jakub@redhat.com>

            PR middle-end/98183
            * omp-low.c (lower_omp_target): Don't add OMP_RETURN for
            data regions.
            * omp-expand.c (expand_omp_target): Don't try to remove
            OMP_RETURN for data regions.
            (build_omp_regions_1, omp_make_gimple_edges): Don't expect
            OMP_RETURN for data regions.

            * gcc.dg/gomp/pr98183.c: New test.
            * gcc.dg/goacc/pr98183.c: New test.


More information about the Gcc-bugs mailing list