This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/81633] [7/8 Regression] Incorrect floating point result with tree vectoriser


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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]