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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |pinskia at gcc dot 
gnu.org

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
One way of fixing this is:
/* Transform (a * { 0 or 1 }) !=/== 0 into (a & { 0 or 1 }) !=/== 0.  */
(for cmp (ne eq)
 (simplify
  (cmp (mult:cs @0 zero_one_valued_p@1) integer_zerop@2)
  (cmp (bit_and @0 @1) @2)))

That is (a*zero_one_valued_p)!=0 transform it into (a & zero_one_valued_p) != 0
if the multiply was single use.

That is how I am going to fix this.

Reply via email to