[Bug middle-end/100733] New: -fcompare-debug failure for pr85213.c at -O1 -fdisable-tree-phiopt2

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun May 23 17:20:18 GMT 2021


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

            Bug ID: 100733
           Summary: -fcompare-debug failure for pr85213.c at -O1
                    -fdisable-tree-phiopt2
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: wrong-debug
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

So while modifying phi-opt, I ran into pr85213.c testcase failing with the C++
front-end. BUT the problem is not related at all to PHI-OPT changes as the IR
coming out of the front-end is hugely different with and without debug
information turned on.

Without debug info turned on we start with:
NON_LVALUE_EXPR <SAVE_EXPR <-(__builtin_expect ((long int) (x == 0), 3) == 0)>
>;

But with:
NON_LVALUE_EXPR <SAVE_EXPR <-(__builtin_expect (# DEBUG BEGIN STMT;
x != 0; ? 0 : 1, 3) == 0)>>


It just happens with the PHI-OPT, by the time we get to expand, the IR is very
similar BUT the difference comes from SSA names are different.

You can reproduce the failure on the trunk without any patches to PHI-OPT by
doing:
g++ -O1 -fsanitize=undefined -fcompare-debug -fdisable-tree-phiopt2
c-c++-common/ubsan/pr85213.c


More information about the Gcc-bugs mailing list