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

Richard Biener <rguenth at gcc dot gnu.org> changed:

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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #3)
> (In reply to Andrew Pinski from comment #2)
> > The vectorizer looks ok though:
> >   mask_patt_37.15_52 = [vec_unpack_lo_expr] mask__9.14_51;
> >   mask_patt_37.15_53 = [vec_unpack_hi_expr] mask__9.14_51;
> >   vect_patt_36.18_57 = .COND_ADD (mask_patt_37.15_52, vect__10.16_54,
> > vect_total_21.17_56, vect__10.16_54);
> >   vect_patt_36.18_58 = .COND_ADD (mask_patt_37.15_53, vect__10.16_55,
> > vect_patt_36.18_57, vect__10.16_55);
> > 
> > 
> >  /* A ? B : B -> B.  */
> >  (simplify
> >   (cnd @0 @1 @1)
> >   @1)
> > 
> > Confirmed, I think COND_ADD  folding goes wrong.
> 
> Wait maybe the original COND_ADD is incorrect. I can't remember how COND_ADD
> works. I thought it was `mask_patt_37.15_52 ?
> (vect__10.16_54+vect_total_21.17_56) : vect__10.16_54` if so then the
> original COND_ADD is wrong.

Yes, I think the .COND_ADD handling fails to handle the single-use-def chain
optimization.

Reply via email to