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

--- Comment #8 from Robin Dapp <rdapp at gcc dot gnu.org> ---
The optimized tree looks good apart from 'd' and the return value :)

  <bb 2> [local count: 76665171]:
  e_lsm.8_12 = e;
  _55 = .MASK_LEN_LOAD (&MEM <_Bool[17]> [(void *)&f + 4B], 8B, { -1, ... },
_54(D), 13, 0);
  vect__10.16_59 = .VCOND_MASK_LEN ({ -1, ... }, _55, { 0, ... }, 13, 0);
  _61 = .REDUC_PLUS (vect__10.16_59);
  _62 = e_lsm.8_12 + _61;
  d = 1;
  e = _62;
  return 1;

Already during/after vectorization we have:

...
  # prephitmp_41 = PHI <1(3)>
  # vect__10.16_60 = PHI <vect__10.16_59(3)>
  _61 = .REDUC_PLUS (vect__10.16_60);
  _62 = _61 + e_lsm.8_12;
  # .MEM_29 = VDEF <.MEM_46>
  dD.2785 = prephitmp_41;
  # .MEM_30 = VDEF <.MEM_29>
  eD.2786 = _62;
  # RANGE [irange] int [0, 1] MASK 0x1 VALUE 0x0
  _13 = (intD.1) prephitmp_41;
  # VUSE <.MEM_30>
  return _13;

where prephitmp_41 seems just wrong.

Reply via email to