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

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

https://gcc.gnu.org/g:18edc195442291525e04f0fa4d5ef972155117da

commit r11-351-g18edc195442291525e04f0fa4d5ef972155117da
Author: Jakub Jelinek <ja...@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  <ja...@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.

Reply via email to