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