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 ...