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

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

https://gcc.gnu.org/g:63da018de828b4792e95d1431118fd10efef87d1

commit r10-9751-g63da018de828b4792e95d1431118fd10efef87d1
Author: Richard Sandiford <richard.sandif...@arm.com>
Date:   Fri Apr 23 10:09:40 2021 +0100

    aarch64: Tweak post-RA handling of CONST_INT moves [PR98136]

    This PR is a regression caused by r8-5967, where we replaced
    a call to aarch64_internal_mov_immediate in aarch64_add_offset
    with a call to aarch64_force_temporary, which in turn uses the
    normal emit_move_insn{,_1} routines.

    The problem is that aarch64_add_offset can be called while
    outputting a thunk, where we require all instructions to be
    valid without splitting.  However, the move expanders were
    not splitting CONST_INT moves themselves.

    I think the right fix is to make the move expanders work
    even in this scenario, rather than require callers to handle
    it as a special case.

    gcc/
            PR target/98136
            * config/aarch64/aarch64.md (mov<mode>): Pass multi-instruction
            CONST_INTs to aarch64_expand_mov_immediate when called after RA.

    gcc/testsuite/
            PR target/98136
            * g++.dg/pr98136.C: New test.

    (cherry picked from commit 48c79f054bf435051c95ee093c45a0f8c9de5b4e)

Reply via email to