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

--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Sergei Trofimovich <sly...@gcc.gnu.org>:

https://gcc.gnu.org/g:043a6fcbc27f8721301eb2f72a7839f54f393003

commit r14-4421-g043a6fcbc27f8721301eb2f72a7839f54f393003
Author: Sergei Trofimovich <siarh...@google.com>
Date:   Wed Sep 27 14:29:12 2023 +0100

    ipa-utils: avoid uninitialized probabilities on ICF [PR111559]

    r14-3459-g0c78240fd7d519 "Check that passes do not forget to define
profile"
    exposed check failures in cases when gcc produces uninitialized profile
    probabilities. In case of PR/111559 uninitialized profile is generated
    by edges executed 0 times reported by IPA profile:

        $ gcc -O2 -fprofile-generate pr111559.c -o b -fopt-info
        $ ./b
        $ gcc -O2 -fprofile-use -fprofile-correction pr111559.c -o b -fopt-info

        pr111559.c: In function 'rule1':
        pr111559.c:6:13: error: probability of edge 3->4 not initialized
            6 | static void rule1(void) { if (p) edge(); }
              |             ^~~~~
        during GIMPLE pass: fixup_cfg
        pr111559.c:6:13: internal compiler error: verify_flow_info failed

    The change conservatively ignores updates with zero execution counts and
    uses initially assigned probabilities (`always` probability in case of
    the example).

            PR ipa/111283
            PR gcov-profile/111559

    gcc/
            * ipa-utils.cc (ipa_merge_profiles): Avoid producing
            uninitialized probabilities when merging counters with zero
            denominators.

    gcc/testsuite/
            * gcc.dg/tree-prof/pr111559.c: New test.

Reply via email to