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

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <[email protected]>:

https://gcc.gnu.org/g:2653d6c63d491dd8f61efff553ad4d7bcc33d53c

commit r17-5320-g2653d6c63d491dd8f61efff553ad4d7bcc33d53c
Author: Jakub Jelinek <[email protected]>
Date:   Mon Oct 19 09:55:20 2026 +0200

    bitintlower: Remove unused large/huge _BitInt PHIs [PR127904]

    tree-outof-ssa.cc before performing coalescing does
    eliminate_useless_phis (), which removes removes PHIs and dead PHIs.
    The following testcase is miscompiled because the coalescing performed
    for the large/huge _BitInt SSA_NAME subset is apparently confused by
    such dead PHIs and puts the result of such an PHI into the same partition
    as one of the PHI args which is unfortunately used later on in the
    function as well, so by reusing the partition we clobber the value of
    the argument and then use the incorrect value later on.
    From this, I think the remove dead PHIs part of
    eliminate_useless_phis is not just an optimization but I think the
    coalescing somehow relies on it.
    So, this patch performs such removal (again, for large/huge _BitInt
    PHIs only) before doing the coalescing as well.

    2026-10-19  Jakub Jelinek  <[email protected]>

            PR tree-optimization/127904
            * tree-outof-ssa.h (remove_gimple_phi_args): Declare.
            * tree-outof-ssa.cc (remove_gimple_phi_args): No longer static.
            * gimple-lower-bitint.cc: Include tree-outof-ssa.h.
            (gimple_lower_bitint): Remove zero uses large/huge _BitInt
            PHI results.

            * gcc.dg/torture/bitint-111.c: New test.

    Reviewed-by: Richard Biener <[email protected]>

Reply via email to