This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/81633] [7/8 Regression] Incorrect floating point result with tree vectoriser
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 31 Jul 2017 16:03:42 +0000
- Subject: [Bug tree-optimization/81633] [7/8 Regression] Incorrect floating point result with tree vectoriser
- Auto-submitted: auto-generated
- References: <bug-81633-4@http.gcc.gnu.org/bugzilla/>
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.