[Bug tree-optimization/56608] [4.7/4.8 Regression] SLP seems to produce incorrect value with -ffast-math

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Mar 13 09:08:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56608

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
      Known to work|                            |4.6.4
           Keywords|                            |wrong-code
   Last reconfirmed|                            |2013-03-13
         AssignedTo|unassigned at gcc dot       |rguenth at gcc dot gnu.org
                   |gnu.org                     |
     Ever Confirmed|0                           |1
            Summary|SLP seems to produce        |[4.7/4.8 Regression] SLP
                   |incorrect value with        |seems to produce incorrect
                   |-ffast-math                 |value with -ffast-math
   Target Milestone|---                         |4.7.3
      Known to fail|                            |4.7.3, 4.8.0

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-13 09:08:04 UTC ---
Confirmed.  Note we also generate non-optimal code in that we keep both
the vectorized and non-vectorized paths:

  _81 = (int) _80;
  uf_15(D)->autoCropHeight = _81;
...
  _84 = (double) _81;
  _85 = _83 / _84;
  if (aspectRatio_20 < _85)
    goto <bb 9>;
  else
    goto <bb 10>;

  <bb 9>:
  _86 = _84 * aspectRatio_20;
  _87 = _86 + 5.0e-1;
  _88 = __builtin_ifloor (_87);

and vectorized:

  vect_p.26_224 = &uf_15(D)->rotatedHeight;
  MEM[(struct ufraw_data *)vect_p.26_224] = vect_var_.22_217;

instead of re-loading the scalars from the vector.  That is, when
looking for scalar stores we start the SLP instance from we fail to
verify that no uses of the scalars in the instance remain after
vectorization.  Or if they remain, we fail to replace them with
vector extracts.

Not sure yet what's the wrong code issue (nothing obvious yet, still
investigating).



More information about the Gcc-bugs mailing list