[Bug rtl-optimization/100225] [8/9/10/11 Regression] ICE in add_cross_iteration_register_deps, at ddg.c:291

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu May 6 12:00:42 GMT 2021


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

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-9 branch has been updated by Roman Zhuykov
<zhroma@gcc.gnu.org>:

https://gcc.gnu.org/g:702e2995f871becf8c1dbd352a8013d672fe4ad1

commit r9-9517-g702e2995f871becf8c1dbd352a8013d672fe4ad1
Author: Roman Zhuykov <zhroma@ispras.ru>
Date:   Thu May 6 15:00:08 2021 +0300

    modulo-sched: skip loops with strange register defs [PR100225]

    PR84878 fix adds an assertion which can fail, e.g. when stack pointer
    is adjusted inside the loop.  We have to prevent it and search earlier
    for any 'strange' instruction.  The solution is to skip the whole loop
    if using 'note_stores' we found that one of hard registers is in
    'df->regular_block_artificial_uses' set.

    Also patch properly prohibit not single-set instruction in loop body.

    gcc/ChangeLog:

            PR rtl-optimization/100225
            PR rtl-optimization/84878
            * modulo-sched.c (sms_schedule): Use note_stores to skip loops
            where we have an instruction which touches (writes) any hard
            register from df->regular_block_artificial_uses set.
            Allow not-single-set instruction only right before basic block
            tail.

    gcc/testsuite/ChangeLog:

            PR rtl-optimization/100225
            PR rtl-optimization/84878
            * gcc.dg/pr100225.c: New test.

    libgomp/ChangeLog:

            * testsuite/libgomp.oacc-c-c++-common/atomic_capture-3.c: New test.

    (cherry picked from commit 4cf3b10f27b1994cf4a9eb12079d85412ebc7cad)


More information about the Gcc-bugs mailing list