[Bug rtl-optimization/100311] UB in sel-sched.c:init_regs_for_mode with -march=armv8-m.base

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Apr 29 10:56:52 GMT 2021


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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Richard Earnshaw
<rearnsha@gcc.gnu.org>:

https://gcc.gnu.org/g:d0ae39ce2c3b4d635de6102ec3750cf6109cdc8d

commit r10-9778-gd0ae39ce2c3b4d635de6102ec3750cf6109cdc8d
Author: Richard Earnshaw <rearnsha@arm.com>
Date:   Wed Apr 28 17:56:38 2021 +0100

    arm: fix UB due to missing mode check [PR100311]

    Some places in the compiler iterate over all the fixed registers to
    check if that register can be used in a particular mode.  The idiom is
    to iterate over the register and then for that register, if it
    supports the current mode to check all that register and any
    additional registers needed (HARD_REGNO_NREGS).  If these two checks
    are not fully aligned then it is possible to generate a buffer overrun
    when testing data objects that are sized by the number of hard regs in
    the machine.

    The VPR register is a case where these checks were not consistent and
    because this is the last HARD register the result was that we ended up
    overflowing the fixed_regs array.

    gcc:
            PR target/100311
            * config/arm/arm.c (arm_hard_regno_mode_ok): Only allow VPR to be
            used in HImode.
    (cherry picked from commit 59f5d16f2c5db4d9592c8ce6453afe81334bb012)


More information about the Gcc-bugs mailing list