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

--- Comment #14 from Martin Liška <marxin at gcc dot gnu.org> ---
commit r9-8364-g08f00a213f8a1b99bbf3ad3c337dea249a288cf1
Author: Richard Earnshaw <rearn...@arm.com>
Date:   Fri Mar 6 10:04:51 2020 +0000

    arm: correct constraints on movsi_compare0 [PR91913]

    The peephole that detects a mov of one register to another followed by
    a comparison of the original register against zero is only used in Arm
    state; but the instruction that matches this is generic to all 32-bit
    compilation states.  That instruction lacks support for SP which is
    permitted in Arm state, but has restrictions in Thumb2 code.

    This patch fixes the problem by allowing SP when in ARM state for all
    registers; in Thumb state it allows SP only as a source when the
    register really is copied to another target.

    gcc/ChangeLog:
            PR target/91913
            Backport from master
            * config/arm/arm.md (movsi_compare0): Allow SP as a source register
            in Thumb state and also as a destination in Arm state.  Add T16
            variants.

    gcc/testsuite/ChangeLog:
            2020-02-10  Jakub Jelinek  <ja...@redhat.com>

            PR target/91913
            Backport from master
            * gfortran.dg/pr91913.f90: New test.

Reply via email to