[Bug debug/95080] [10 Regression] -fcompare-debug failure (length) with -Og -fcse-follow-jumps -fnon-call-exceptions

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jun 14 10:07:15 GMT 2020


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

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

https://gcc.gnu.org/g:16710ff9803bc48aabdfecce30866ffac6d29342

commit r10-8292-g16710ff9803bc48aabdfecce30866ffac6d29342
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed May 13 11:22:37 2020 +0200

    Fix -fcompare-debug issue in purge_dead_edges [PR95080]

    The following testcase fails with -fcompare-debug, the bug used to be
latent
    since introduction of -fcompare-debug.
    The loop at the start of purge_dead_edges behaves differently between -g0
    and -g - if the last insn is a DEBUG_INSN, then it skips not just
    DEBUG_INSNs but also NOTEs until it finds some other real insn (or bb
head),
    while with -g0 it will not skip any NOTEs, so if we have
    real_insn
    note
    debug_insn // not present with -g0
    then with -g it might remove useless REG_EH_REGION from real_insn, while
    with -g0 it will not.

    Yet another option would be not skipping NOTE_P in the loop; I couldn't
find
    in history rationale for why it is done.

    2020-05-13  Jakub Jelinek  <jakub@redhat.com>

            PR debug/95080
            * cfgrtl.c (purge_dead_edges): Skip over debug and note insns even
            if the last insn is a note.

            * g++.dg/opt/pr95080.C: New test.

    (cherry picked from commit 18edc195442291525e04f0fa4d5ef972155117da)


More information about the Gcc-bugs mailing list