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

--- Comment #19 from Robin Dapp <rdapp at gcc dot gnu.org> ---
What seems odd to me is that in fre5 we simplify

  _429 = .COND_SHL (mask_patt_205.47_276, vect_cst__262, vect_cst__262, { 0,
... });
  vect_prephitmp_129.51_282 = _429;
  vect_iftmp.55_287 = VEC_COND_EXPR <mask_patt_209.54_286,
vect_prephitmp_129.51_282, vect_cst__262>;

to

Applying pattern match.pd:9607, gimple-match-10.cc:3817
gimple_simplified to vect_iftmp.55_287 = .COND_SHL (mask_patt_205.47_276,
vect_cst__262, vect_cst__262, { 0, ... });

so fold

vec_cond (mask209, prephitmp129, vect_cst262)
with prephitmp129 = cond_shl (mask205, vect_cst262, vect_cst262, 0)

into
cond_shl = (mask205, vect_cst262, vect_cst262, 0)?

That doesn't look valid to me because the vec_cond's else value (vect_cst262)
gets lost.  Wouldn't such a simplification have a conditional else value?
Like !mask1 ? else1 : else2 instead of else2 unconditionally?

Reply via email to