[Bug c/107001] ICE in expand_gimple_stmt_1, at cfgexpand.cc:4017 since r9-3941-g28567c40e2c7c88e

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Nov 4 08:31:15 GMT 2022


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

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

https://gcc.gnu.org/g:8693cafd8975364ef9b409c18ddfc233e66345d8

commit r11-10360-g8693cafd8975364ef9b409c18ddfc233e66345d8
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Sat Sep 24 09:24:26 2022 +0200

    openmp: Fix ICE with taskgroup at -O0 -fexceptions [PR107001]

    The following testcase ICEs because with -O0 -fexceptions
GOMP_taskgroup_end
    call isn't directly followed by GOMP_RETURN statement, but there are some
    conditionals to handle exceptions and we fail to find the correct
GOMP_RETURN.

    The fix is to treat taskgroup similarly to target data, both of these
constructs
    emit a try { body } finally { end_call } around the construct's body during
    gimplification and we need to see proper construct nesting during
gimplification
    and omp lowering (including nesting of regions checks), but during omp
expansion
    we don't really need their nesting anymore, all we need is emit something
at
    the start of the region and the end of the region is the end API call we've
    already emitted during gimplification.  For target data, we weren't adding
    GOMP_RETURN statement during omp lowering, so after that pass it is treated
    merely like stand-alone omp directives.  This patch does the same for
    taskgroup too.

    2022-09-24  Jakub Jelinek  <jakub@redhat.com>

            PR c/107001
            * omp-low.c (lower_omp_taskgroup): Don't add GOMP_RETURN statement
            at the end.
            * omp-expand.c (build_omp_regions_1): Clarify
GF_OMP_TARGET_KIND_DATA
            is not stand-alone directive.  For GIMPLE_OMP_TASKGROUP, also don't
            update parent.
            (omp_make_gimple_edges) <case GIMPLE_OMP_TASKGROUP>: Reset
            cur_region back after new_omp_region.

            * c-c++-common/gomp/pr107001.c: New test.

    (cherry picked from commit ad2aab5c816a6fd56b46210c0a4a4c6243da1de9)


More information about the Gcc-bugs mailing list