[Bug target/96767] -mpure-code produces indirect loads for thumb-1

clyon at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Nov 2 07:39:29 GMT 2020


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

Christophe Lyon <clyon at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED

--- Comment #2 from Christophe Lyon <clyon at gcc dot gnu.org> ---
The master branch has been updated by Christophe Lyon <clyon@gcc.gnu.org>:

https://gcc.gnu.org/g:4d9af90d6a216822fe117337fb9836ba656dc3af

commit r11-4598-g4d9af90d6a216822fe117337fb9836ba656dc3af
Author: Christophe Lyon <christophe.lyon@linaro.org>
Date:   Mon Nov 2 07:31:22 2020 +0000

    arm: Avoid indirection with -mpure-code on v6m (PR96967)

    With -mpure-code on v6m (thumb-1), to avoid a useless indirection when
    building the address of a symbol, we want to consider SYMBOL_REF as a
    legitimate constant. This way, we build the address using a series of
    upper/lower relocations instead of loading the address from memory.

    This patch also fixes a missing "clob" conds attribute for
    thumb1_movsi_insn, needed because that alternative clobbers the flags.

    2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>

            gcc/
            PR target/96967
            * config/arm/arm.c (thumb_legitimate_constant_p): Add support for
            disabled literal pool in thumb-1.
            * config/arm/thumb1.md (thumb1_movsi_symbol_ref): Remove.
            (*thumb1_movsi_insn): Add support for SYMBOL_REF with -mpure-code.

            gcc/testsuite
            PR target/96967
            * gcc.target/arm/pure-code/pr96767.c: New test.


More information about the Gcc-bugs mailing list