https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81633
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- In -fdump-tree-vect-details, the difference with this commit is: --- pr81633.c.149t.vect.239539 2017-07-31 12:00:11.000000000 -0400 +++ pr81633.c.149t.vect.239542 2017-07-31 12:00:33.000000000 -0400 @@ -1721,8 +1721,8 @@ pr81633.c:10:5: note: vect_is_simple_use pr81633.c:10:5: note: def_stmt: _69 = identity[j_31][0]; pr81633.c:10:5: note: type of def: internal pr81633.c:10:5: note: transform binary/unary operation. -pr81633.c:10:5: note: add new stmt: vect__71.20_33 = vect__69.14_23 * vect__69.18_14; -pr81633.c:10:5: note: add new stmt: vect__71.20_19 = vect__69.15_22 * vect__69.19_18; +pr81633.c:10:5: note: add new stmt: vect__71.20_33 = vect__69.14_23 * vect__69.14_23; +pr81633.c:10:5: note: add new stmt: vect__71.20_19 = vect__69.15_22 * vect__69.15_22; pr81633.c:10:5: note: ------>vectorizing SLP node starting from: tmp[j_31][0] = _71; pr81633.c:10:5: note: vect_is_simple_use: operand _71 pr81633.c:10:5: note: def_stmt: _71 = _69 * _69; @@ -1753,8 +1753,8 @@ pr81633.c:10:5: note: ------>vectorizing pr81633.c:10:5: note: ------>vectorizing statement: vectp_identity.16_5 = vectp_identity.16_17 + 16; pr81633.c:10:5: note: ------>vectorizing statement: vect__69.19_18 = MEM[(double *)vectp_identity.16_5]; pr81633.c:10:5: note: ------>vectorizing statement: _91 = identity[j_31][3]; -pr81633.c:10:5: note: ------>vectorizing statement: vect__71.20_33 = vect__69.14_23 * vect__69.18_14; -pr81633.c:10:5: note: ------>vectorizing statement: vect__71.20_19 = vect__69.15_22 * vect__69.19_18; +pr81633.c:10:5: note: ------>vectorizing statement: vect__71.20_33 = vect__69.14_23 * vect__69.14_23; +pr81633.c:10:5: note: ------>vectorizing statement: vect__71.20_19 = vect__69.15_22 * vect__69.15_22; pr81633.c:10:5: note: ------>vectorizing statement: _92 = _69 * _91; pr81633.c:10:5: note: ------>vectorizing statement: MEM[(double *)vectp_tmp.21_16] = vect__71.20_33; pr81633.c:10:5: note: ------>vectorizing statement: vectp_tmp.21_87 = vectp_tmp.21_16 + 16; @@ -1864,8 +1864,8 @@ main () vectp_identity.16_5 = vectp_identity.16_17 + 16; vect__69.19_18 = MEM[(double *)vectp_identity.16_5]; _91 = identity[j_31][3]; - vect__71.20_33 = vect__69.14_23 * vect__69.18_14; - vect__71.20_19 = vect__69.15_22 * vect__69.19_18; + vect__71.20_33 = vect__69.14_23 * vect__69.14_23; + vect__71.20_19 = vect__69.15_22 * vect__69.15_22; _92 = _69 * _91; MEM[(double *)vectp_tmp.21_16] = vect__71.20_33; vectp_tmp.21_87 = vectp_tmp.21_16 + 16; The multiplication has different operands, so the newer output looks clearly wrong.