[Bug middle-end/80131] powerpc: 1U << (31 - x) doesn't generate optimised code
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Tue Mar 21 17:20:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80131
--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
On Tue, 21 Mar 2017, segher at gcc dot gnu.org wrote:
> If we have d = a << (b - c); and a << b does not truncate in the
> original mode, write it as d := (a << b) >> c; instead (and then
> see if it is actually cheaper, as combine always does).
If b is not 31 (for shifts of 32-bit values), a << (b - c) may be valid
for some negative values of c, where (a << b) >> c isn't valid for
negative c (as C code, so doing such an optimization in such a case would
depend on the semantics of the machine instructions available and
associated RTL).
More information about the Gcc-bugs
mailing list