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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2015-12-11
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
     Ever confirmed|0                           |1

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
So before the patch:

  _9157 = (void *) ivtmp.7110_9173;
  vect__1371.6453_5409 = MEM[base: _9157, offset: 0B];
  _9156 = (void *) ivtmp.7111_9168;
  [shell2.fppized.f90:975:0] _964 = MEM[base: _9156, offset: 0B];
...
  _3980 = REALPART_EXPR <_968>;
  _390 = IMAGPART_EXPR <_968>;
  [shell2.fppized.f90:975:0] vect_cst__10558 = {_964, _964};
  [shell2.fppized.f90:975:0] vect_cst__10556 = {_3980, _390};
  [shell2.fppized.f90:975:0] vect__455.6454_10315 = vect_cst__10556 *
vect_cst__10558 + vect__1371.6453_5409;
  [shell2.fppized.f90:975:0] MEM[base: _9157, offset: 0B] =
vect__455.6454_10315;

after it:

  _9159 = (void *) ivtmp.7109_9175;
  vect__1371.6452_10556 = MEM[base: _9159, offset: 0B];
  _395 = MEM[base: _9159, offset: 8B];
  _9158 = (void *) ivtmp.7110_9170;
  [shell2.fppized.f90:975:0] _964 = MEM[base: _9158, offset: 0B];
...
  _3980 = REALPART_EXPR <_968>;
  [shell2.fppized.f90:975:0] _177 = _964 * _3980;
  [shell2.fppized.f90:975:0] vect_cst__10554 = {_177, _395};
  [shell2.fppized.f90:975:0] vect__455.6453_5427 = vect_cst__10554 +
vect__1371.6452_10556;
  [shell2.fppized.f90:975:0] MEM[base: _9159, offset: 0B] =
vect__455.6453_5427;

somehow the IMAGPART <_968> * _964 got "lost" and replaced by a load from _395.

So a bug in the vectorizer after all.  More next week ...

Reply via email to