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

--- Comment #13 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-14 branch has been updated by Richard Sandiford
<rsand...@gcc.gnu.org>:

https://gcc.gnu.org/g:51761b3b8b98e1b9ca02ae293de00644da83b85d

commit r14-11236-g51761b3b8b98e1b9ca02ae293de00644da83b85d
Author: Richard Sandiford <richard.sandif...@arm.com>
Date:   Wed Jan 22 15:23:54 2025 +0000

    aarch64: Detect word-level modification in early-ra [PR118184]

    REGMODE_NATURAL_SIZE is set to 64 bits for everything except
    VLA SVE modes.  This means that it's possible to modify (say)
    the highpart of a TI pseudo or a V2DI pseudo independently
    of the lowpart.  Modifying such highparts requires a reload
    if the highpart ends up in the upper 64 bits of an FPR,
    since RTL semantics do not allow the highpart of a single
    hard register to be modified independently of the lowpart.

    early-ra missed a check for this case, which meant that it
    effectively treated an assignment to (subreg:DI (reg:TI R) 0)
    as an assignment to the whole of R.

    gcc/
            PR target/118184
            * config/aarch64/aarch64-early-ra.cc (allocno_assignment_is_rmw):
            New function.
            (early_ra::record_insn_defs): Mark the live range information as
            untrustworthy if an assignment would change part of an allocno
            but preserve the rest.

    gcc/testsuite/
            * gcc.dg/torture/pr118184.c: New test.
  • [Bug target/118184] [14 backpor... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to