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

Tamar Christina <tnfchris at gcc dot gnu.org> changed:

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

--- Comment #4 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
Strange... I'll take a look.

It looks like the vectorizer has generated correct code even after this change

  _54 = .COND_MUL (mask_patt_20.12_45, vect__1.9_38, { 2.0e+0, 2.0e+0, 2.0e+0,
2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 }, { 1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0,
1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0 });
  vect_patt_21.13_48 = _54;
  _55 = .COND_MUL (mask_patt_20.12_46, vect__1.9_39, { 2.0e+0, 2.0e+0, 2.0e+0,
2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 }, { 1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0,
1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0 });
  vect_patt_21.13_49 = _55;
  iftmp.0_3 = i_10 != 0 ? iftmp.0_8 : 1.0e+0;
  # RANGE [1, 17] NONZERO 31
  i_9 = i_10 + 1;
  ivtmp_2 = ivtmp_4 - 1;
  ivtmp_53 = ivtmp_52 + 1;
  if (ivtmp_53 < 1)

but DCE6 mangles this to invalid gimple:

  .COND_MUL (mask_patt_20.12_45, vect__1.9_38, { 2.0e+0, 2.0e+0, 2.0e+0,
2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 }, { 1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0,
1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0 });
  .COND_MUL (mask_patt_20.12_46, vect__1.9_39, { 2.0e+0, 2.0e+0, 2.0e+0,
2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 }, { 1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0,
1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0 });
  ivtmp_53 = ivtmp_52 + 1;
  if (ivtmp_53 < 1)


it removes the dead statements but removes the SSA var _55 without removing
it's definition.

Reply via email to