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

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

https://gcc.gnu.org/g:04aaa315db27726e090ca7c3ca3aed9dd5895701

commit r9-9464-g04aaa315db27726e090ca7c3ca3aed9dd5895701
Author: Richard Sandiford <richard.sandif...@arm.com>
Date:   Sun Apr 25 14:51:15 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