[Bug rtl-optimization/89435] [7/8/9 Regression] wrong code with -O1 -march=armv4 -fno-forward-propagate with __builtin_sub_overflow()

ebotcazou at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Feb 21 18:25:00 GMT 2019


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

Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ebotcazou at gcc dot gnu.org

--- Comment #4 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> The paradoxical register in the insn 78 means the upper bits are
> undefined, but we really use the upper bits later on (fully 32-bit
> comparison).  Either it should have propagated the constant down, or it
> can't assume anything about the paradoxical subreg bits (if they must not be
> ignored), because the RA can stick the different pseudos into different
> registers, rather than setting a single hw register to 0xff and then having
> the upper bits always zero.

The RA (reload/LRA) has special provisions for WORD_REGISTER_OPERATIONS targets
though to make sure that only full words are reloaded, so that the combiner can
make such assumptions.  I can have a closer look at the PR if you want.


More information about the Gcc-bugs mailing list