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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2014-05-15
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
            Summary|[4.9 Regression]            |[4.9/4.10 Regression]
                   |vectorization failed with   |vectorization failed with
                   |"bit-precision arithmetic   |"bit-precision arithmetic
                   |not supported" even if      |not supported" even if
                   |conversion to int is        |conversion to int is
                   |requested                   |requested
     Ever confirmed|0                           |1

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
I see on trunk after if-conversion

  _6 = _5 > 0.0;
  _9 = _7 < _8;
  _10 = _9 & _6;
  _11 = (int) _10;
  k[i_18] = _11;
  iftmp.0_13 = z[i_18];
  iftmp.0_2 = _10 ? iftmp.0_13 : _8;
  z[i_18] = iftmp.0_2;

so what happens is that we do have "bit-precision" arithmetic with the
bitwise and.

This is a regression because of the way we lower comparisons now I guess.

I will have a look.

Reply via email to