[Bug rtl-optimization/78447] [7 Regression] wrong code when combine changes shifts by << 5 and >> 15 to >> 10 at -O
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Nov 25 19:27:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78447
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: segher
Date: Wed Nov 23 14:33:13 2016
New Revision: 242757
URL: https://gcc.gnu.org/viewcvs?rev=242757&root=gcc&view=rev
Log:
combine: Convert subreg-of-lshiftrt to zero_extract properly (PR78390)
r242414, for PR77881, introduces some bugs (PR78390, PR78438, PR78477).
It all has the same root cause: that patch makes combine convert every
lowpart subreg of a logical shift right to a zero_extract. This cannot
work at all if it is not a constant shift, and it has to be a bit more
careful exactly which bits it extracts.
PR target/77881
PR bootstrap/78390
PR target/78438
PR bootstrap/78477
* combine.c (make_compound_operation_int): Do not convert a subreg of
a non-constant logical shift right to a zero_extract. Handle the case
where some zero bits have been shifted into the range covered by that
subreg.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/combine.c
More information about the Gcc-bugs
mailing list