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

--- Comment #28 from Segher Boessenkool <segher 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

Reply via email to