aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2022-09-08 16:18:28 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2022-09-08 16:18:28 +0100
commit338a5b0d7da84ef1f6c01dd96abf2c6bc830f403 (patch)
tree4a2db79af8eb0bca7cd30ff9b0c3d828ac0d0b23
parent0697bd070c4fffb33468976c93baff9493922fb3 (diff)
downloadgcc-338a5b0d7da84ef1f6c01dd96abf2c6bc830f403.zip
gcc-338a5b0d7da84ef1f6c01dd96abf2c6bc830f403.tar.gz
gcc-338a5b0d7da84ef1f6c01dd96abf2c6bc830f403.tar.bz2
vect: Fix scalar stmt typo in vect_optimize_slp_pass [PR106886]
Fix a stupid typo in my vect_optimize_slp_pass patch. gcc/ PR tree-optimization/106886 * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout): Fix copying of scalar stmts. gcc/testsuite/ PR tree-optimization/106886 * gcc.dg/vect/bb-slp-layout-21.c: New test.
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-layout-21.c23
-rw-r--r--gcc/tree-vect-slp.cc2
2 files changed, 24 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-layout-21.c b/gcc/testsuite/gcc.dg/vect/bb-slp-layout-21.c
new file mode 100644
index 0000000..c851d58
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-layout-21.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-march=bdver2" { target x86_64-*-* i?86-*-* } } */
+
+int rl2GeomExport64_little_endian, rl2GeomExport64_little_endian_arch;
+void rl2GeomExport64(unsigned char *p, double value) {
+ union {
+ unsigned char byte[8];
+ double double_value;
+ } convert;
+ convert.double_value = value;
+ if (rl2GeomExport64_little_endian_arch)
+ if (rl2GeomExport64_little_endian) {
+ *(p + 7) = convert.byte[0];
+ *(p + 6) = convert.byte[1];
+ *(p + 5) = convert.byte[2];
+ *(p + 4) = convert.byte[3];
+ *(p + 3) = convert.byte[4];
+ *(p + 2) = convert.byte[5];
+ *(p + 1) = convert.byte[6];
+ *p = convert.byte[7];
+ } else
+ *p = convert.byte[7];
+}
diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 3fa2dc9..ca3422c 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -5212,7 +5212,7 @@ vect_optimize_slp_pass::get_result_with_layout (slp_tree node,
if (SLP_TREE_SCALAR_STMTS (node).length ())
{
auto &stmts = SLP_TREE_SCALAR_STMTS (result);
- stmts.safe_splice (SLP_TREE_SCALAR_STMTS (result));
+ stmts.safe_splice (SLP_TREE_SCALAR_STMTS (node));
if (from_layout_i != 0)
vect_slp_permute (m_perms[from_layout_i], stmts, false);
if (to_layout_i != 0)