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.