[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