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