[Bug rtl-optimization/122215] Nondeterminism in ra on riscv32

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Dec 5 19:29:37 GMT 2025


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

--- Comment #16 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Vladimir Makarov <vmakarov@gcc.gnu.org>:

https://gcc.gnu.org/g:2b83c489ca8ac24b3fb8b1214ec83f85f9beeedb

commit r16-5924-g2b83c489ca8ac24b3fb8b1214ec83f85f9beeedb
Author: Vladimir N. Makarov <vmakarov@redhat.com>
Date:   Fri Dec 5 14:21:38 2025 -0500

    [PR122215, IRA]: Fix undefined behaviour of improve_allocation

    Register filters are used in one loop of improve_allocation to ignore some
    hard regs for cost calculation but it is missed in the subsequent loop
    using the costs.  This results in usage of random (undefined) register
costs
    and in sporadic code generation for riscv32 which uses the filters.

    gcc/ChangeLog:

            PR rtl-optimization/122215
            * ira-color.cc (improve_allocation): Use register filter for all
            loop on hard regs.

    gcc/testsuite/ChangeLog:

            PR rtl-optimization/122215
            * gcc.target/riscv/pr122215.c: New.
            * lib/target-supports.exp (check_effective_target_valgrind): New.


More information about the Gcc-bugs mailing list