adjust BB vectorization dump scanning
authorRichard Biener <rguenther@suse.de>
Thu, 8 Oct 2020 09:53:51 +0000 (11:53 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 8 Oct 2020 11:34:55 +0000 (13:34 +0200)
This adjusts BB vectorization testcases to look for the number of
SLP subgraphs vectorized rather than for the number of basic blocks
we've found opportunities in because followup patches will play
with the granularity we work on, vectorizing multiple basic blocks
at a time.

Together with this, because I noticed when looking at non-obvious
mismatches, I avoid analyzing group-size 1 SLP instances which
result in pointless V1mode vectorizations.

It might be interesting to work on adding sth like
dg-warning to look for -fopt-info-{optimized,missing} so
we could directly annotate (not) vectorized loops instead of
relying on fragile counts.

2020-10-08  Richard Biener  <rguenther@suse.de>

* tree-vectorizer.c (try_vectorize_loop_1): Do not dump
"basic block vectorized".
(pass_slp_vectorize::execute): Likewise.
* tree-vect-slp.c (vect_analyze_slp_instance): Avoid
re-analyzing split single stmts.

* g++.dg/vect/slp-pr50819.cc: Adjust.
* gcc.dg/vect/bb-slp-1.c: Adjust.
* gcc.dg/vect/bb-slp-10.c: Adjust.
* gcc.dg/vect/bb-slp-11.c: Adjust.
* gcc.dg/vect/bb-slp-13.c: Adjust.
* gcc.dg/vect/bb-slp-14.c: Adjust.
* gcc.dg/vect/bb-slp-15.c: Adjust.
* gcc.dg/vect/bb-slp-16.c: Adjust.
* gcc.dg/vect/bb-slp-17.c: Adjust.
* gcc.dg/vect/bb-slp-18.c: Adjust.
* gcc.dg/vect/bb-slp-19.c: Adjust.
* gcc.dg/vect/bb-slp-2.c: Adjust.
* gcc.dg/vect/bb-slp-20.c: Adjust.
* gcc.dg/vect/bb-slp-21.c: Adjust.
* gcc.dg/vect/bb-slp-22.c: Adjust.
* gcc.dg/vect/bb-slp-23.c: Adjust.
* gcc.dg/vect/bb-slp-24.c: Adjust.
* gcc.dg/vect/bb-slp-25.c: Adjust.
* gcc.dg/vect/bb-slp-26.c: Adjust.
* gcc.dg/vect/bb-slp-27.c: Adjust.
* gcc.dg/vect/bb-slp-28.c: Adjust.
* gcc.dg/vect/bb-slp-29.c: Adjust.
* gcc.dg/vect/bb-slp-3.c: Adjust.
* gcc.dg/vect/bb-slp-30.c: Adjust.
* gcc.dg/vect/bb-slp-31.c: Adjust.
* gcc.dg/vect/bb-slp-34.c: Adjust.
* gcc.dg/vect/bb-slp-35.c: Adjust.
* gcc.dg/vect/bb-slp-36.c: Adjust.
* gcc.dg/vect/bb-slp-38.c: Adjust.
* gcc.dg/vect/bb-slp-4.c: Adjust.
* gcc.dg/vect/bb-slp-45.c: Adjust.
* gcc.dg/vect/bb-slp-46.c: Adjust.
* gcc.dg/vect/bb-slp-48.c: Adjust.
* gcc.dg/vect/bb-slp-5.c: Adjust.
* gcc.dg/vect/bb-slp-6.c: Adjust.
* gcc.dg/vect/bb-slp-7.c: Adjust.
* gcc.dg/vect/bb-slp-8.c: Adjust.
* gcc.dg/vect/bb-slp-8a.c: Adjust.
* gcc.dg/vect/bb-slp-8b.c: Adjust.
* gcc.dg/vect/bb-slp-9.c: Adjust.
* gcc.dg/vect/bb-slp-div-2.c: Adjust.
* gcc.dg/vect/bb-slp-over-widen-1.c: Adjust.
* gcc.dg/vect/bb-slp-over-widen-2.c: Adjust.
* gcc.dg/vect/bb-slp-pattern-2.c: Adjust.
* gcc.dg/vect/bb-slp-pow-1.c: Adjust.
* gcc.dg/vect/bb-slp-pr58135.c: Adjust.
* gcc.dg/vect/bb-slp-pr65935.c: Adjust.
* gcc.dg/vect/bb-slp-pr78205.c: Adjust.
* gcc.dg/vect/bb-slp-pr81635-1.c: Adjust.
* gcc.dg/vect/bb-slp-pr81635-3.c: Adjust.
* gcc.dg/vect/bb-slp-pr95839-2.c: Adjust.
* gcc.dg/vect/bb-slp-pr95839.c: Adjust.
* gcc.dg/vect/bb-slp-pr95866.c: Adjust.
* gcc.dg/vect/bb-slp-subgroups-1.c: Adjust.
* gcc.dg/vect/bb-slp-subgroups-2.c: Adjust.
* gcc.dg/vect/bb-slp-subgroups-3.c: Adjust.
* gcc.dg/vect/fast-math-bb-slp-call-1.c: Adjust.
* gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Adjust.
* gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Adjust.
* gfortran.dg/vect/pr62283-2.f: Adjust.
* gcc.target/i386/pr68961.c: Adjust.
* gcc.target/i386/pr84101.c: Adjust.
* gcc.dg/vect/bb-slp-pr81635-2.c: Adjust.
* gcc.dg/vect/bb-slp-pr81635-4.c: Adjust.
* gcc.dg/vect/fast-math-bb-slp-call-2.c: Adjust.
* gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Adjust.
* gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c: Adjust.
* gcc.dg/vect/bb-slp-div-1.c: Adjust.
* gcc.dg/vect/bb-slp-pr90006.c: Adjust.
* g++.dg/vect/slp-pr50413.cc: Adjust.

72 files changed:
gcc/testsuite/g++.dg/vect/slp-pr50413.cc
gcc/testsuite/g++.dg/vect/slp-pr50819.cc
gcc/testsuite/gcc.dg/vect/bb-slp-1.c
gcc/testsuite/gcc.dg/vect/bb-slp-10.c
gcc/testsuite/gcc.dg/vect/bb-slp-11.c
gcc/testsuite/gcc.dg/vect/bb-slp-13.c
gcc/testsuite/gcc.dg/vect/bb-slp-14.c
gcc/testsuite/gcc.dg/vect/bb-slp-15.c
gcc/testsuite/gcc.dg/vect/bb-slp-16.c
gcc/testsuite/gcc.dg/vect/bb-slp-17.c
gcc/testsuite/gcc.dg/vect/bb-slp-18.c
gcc/testsuite/gcc.dg/vect/bb-slp-19.c
gcc/testsuite/gcc.dg/vect/bb-slp-2.c
gcc/testsuite/gcc.dg/vect/bb-slp-20.c
gcc/testsuite/gcc.dg/vect/bb-slp-21.c
gcc/testsuite/gcc.dg/vect/bb-slp-22.c
gcc/testsuite/gcc.dg/vect/bb-slp-23.c
gcc/testsuite/gcc.dg/vect/bb-slp-24.c
gcc/testsuite/gcc.dg/vect/bb-slp-25.c
gcc/testsuite/gcc.dg/vect/bb-slp-26.c
gcc/testsuite/gcc.dg/vect/bb-slp-27.c
gcc/testsuite/gcc.dg/vect/bb-slp-28.c
gcc/testsuite/gcc.dg/vect/bb-slp-29.c
gcc/testsuite/gcc.dg/vect/bb-slp-3.c
gcc/testsuite/gcc.dg/vect/bb-slp-30.c
gcc/testsuite/gcc.dg/vect/bb-slp-31.c
gcc/testsuite/gcc.dg/vect/bb-slp-34.c
gcc/testsuite/gcc.dg/vect/bb-slp-35.c
gcc/testsuite/gcc.dg/vect/bb-slp-36.c
gcc/testsuite/gcc.dg/vect/bb-slp-38.c
gcc/testsuite/gcc.dg/vect/bb-slp-4.c
gcc/testsuite/gcc.dg/vect/bb-slp-45.c
gcc/testsuite/gcc.dg/vect/bb-slp-46.c
gcc/testsuite/gcc.dg/vect/bb-slp-48.c
gcc/testsuite/gcc.dg/vect/bb-slp-5.c
gcc/testsuite/gcc.dg/vect/bb-slp-6.c
gcc/testsuite/gcc.dg/vect/bb-slp-7.c
gcc/testsuite/gcc.dg/vect/bb-slp-8.c
gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
gcc/testsuite/gcc.dg/vect/bb-slp-9.c
gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
gcc/testsuite/gcc.dg/vect/bb-slp-div-2.c
gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-1.c
gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-2.c
gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
gcc/testsuite/gcc.dg/vect/bb-slp-pow-1.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr65935.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-1.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-2.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-3.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-4.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr95839-2.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr95839.c
gcc/testsuite/gcc.dg/vect/bb-slp-pr95866.c
gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c
gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c
gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c
gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c
gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c
gcc/testsuite/gcc.target/i386/pr68961.c
gcc/testsuite/gcc.target/i386/pr84101.c
gcc/testsuite/gfortran.dg/vect/pr62283-2.f
gcc/tree-vect-slp.c
gcc/tree-vectorizer.c

index 12f92fc..3e11c34 100644 (file)
@@ -160,5 +160,4 @@ void shift(unsigned char t)
   V.bitmap.b96 = t;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
-
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 0 "slp2" } } */
index ce5c20f..b15c34a 100644 (file)
@@ -49,4 +49,4 @@ const & v2) {
   res = res + s*(v1+v2);
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */
index e6818cb..793c41f 100644 (file)
@@ -55,4 +55,4 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-not "can't force alignment" "slp1" } } */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1" } } */
index ad6f878..697dc4e 100644 (file)
@@ -50,5 +50,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump "unsupported unaligned access" "slp2" { target { ! vect_element_align } } } } */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_element_align } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_element_align } } } */
   
index cb8bddd..ff43253 100644 (file)
@@ -49,5 +49,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect64 } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect64 } } } */
   
index 302e20f..fdff76e 100644 (file)
@@ -46,5 +46,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
   
index e7d4e6c..62ee757 100644 (file)
@@ -48,5 +48,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
   
index a749041..efe7d6a 100644 (file)
@@ -51,5 +51,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
   
index 42abd64..e68a9b6 100644 (file)
@@ -65,5 +65,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1" } } */
   
index c20e0ff..f8bfb4b 100644 (file)
@@ -57,5 +57,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
   
index 9476653..db3f0ba 100644 (file)
@@ -46,5 +46,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
   
index db446be..7e3ccb4 100644 (file)
@@ -52,5 +52,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
   
index cee9db5..fcf1cd3 100644 (file)
@@ -53,5 +53,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1" } } */
   
index f6dfaa7..134858c 100644 (file)
@@ -63,6 +63,6 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp2" { target vect_int_mult } } } */
   
index 5464d09..d4c98d6 100644 (file)
@@ -63,6 +63,6 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2"  } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp2" } } */
   
index b531651..2155230 100644 (file)
@@ -63,5 +63,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */
 /* { dg-final { scan-tree-dump "vectorizing SLP node starting from: _\[0-9\]+ = _\[0-9\]+ \\\* a0" "slp2" { target vect_int_mult  } } } */
index e57ca41..ed4a595 100644 (file)
@@ -51,5 +51,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
   
index d5b6bfb..ca049c8 100644 (file)
@@ -55,5 +55,5 @@ int main (void)
 
 /* Exclude POWER8 (only POWER cpu for which vect_element_align is true)
    because loops have vectorized before SLP gets a shot.  */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_element_align && { ! powerpc*-*-* } } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1" { target { vect_element_align && { ! powerpc*-*-* } } } } } */
 
index ec31329..7a9cf95 100644 (file)
@@ -56,5 +56,5 @@ int main (void)
 
 /* Exclude POWER8 (only POWER cpu for which vect_element_align is true)
    because loops have vectorized before SLP gets a shot.  */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_element_align && { ! powerpc*-*-* } } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1" { target { vect_element_align && { ! powerpc*-*-* } } } } } */
 
index 91b6cac..df52967 100644 (file)
@@ -54,5 +54,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect64 && vect_hw_misalign } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1" { target { vect64 && vect_hw_misalign } } } } */
 
index 8ef8bb0..bc27f2f 100644 (file)
@@ -44,5 +44,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */
 
index a4c01b9..8749a1f 100644 (file)
@@ -66,5 +66,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_int_mult &&  { vect_pack_trunc && vect_unpack } } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { target { vect_int_mult &&  { vect_pack_trunc && vect_unpack } } } } } */
 
index 747896b..b531350 100644 (file)
@@ -56,5 +56,5 @@ int main (void)
 
 /* Exclude POWER8 (only POWER cpu for which vect_element_align is true)
    because loops have vectorized before SLP gets a shot.  */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1"  { target { { vect_int_mult && vect_element_align } && { ! powerpc*-*-* } } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1"  { target { { vect_int_mult && vect_element_align } && { ! powerpc*-*-* } } } } } */
 
index 4f47738..2636670 100644 (file)
@@ -42,5 +42,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
   
index 224f9de..c3d7ae1 100644 (file)
@@ -50,4 +50,4 @@ int main()
   return a[21];
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
index 8e4e2d4..6a131e7 100644 (file)
@@ -9,4 +9,4 @@ void f(){
   a[1]=1+2*a[1]*a[1];
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
index c51c770..a625c45 100644 (file)
@@ -32,4 +32,4 @@ int main()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target vect_perm } } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" { target vect_perm } } } */
index 5803f8e..81b228b 100644 (file)
@@ -9,4 +9,4 @@ void foo (int * __restrict__ p, short * __restrict__ q)
   p[3] = q[3] + 1;
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target vect_hw_misalign } } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" { target vect_hw_misalign } } } */
index f424d12..fbcedd0 100644 (file)
@@ -32,4 +32,4 @@ int main()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target vect_perm } } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" { target vect_perm } } } */
index 9c57ea3..a7bc032 100644 (file)
@@ -40,5 +40,4 @@ int main()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target vect_perm } } } */
-/* { dg-final { scan-tree-dump "basic block part vectorized" "slp2" { target vect_perm } } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" { target vect_perm } } } */
index 293b0e3..9e36963 100644 (file)
@@ -38,4 +38,4 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
index 4107a34..d24ef2a 100644 (file)
@@ -33,4 +33,4 @@ int main()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
index 4e4571e..8daa5c1 100644 (file)
@@ -21,7 +21,7 @@ int foo ()
 /* We should extract the live lane from the vectorized add rather than
    keeping the original scalar add.
    ???  Because of a too conservative check we fail for temx here.  */
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
 /* { dg-final { scan-tree-dump "extracting lane for live stmt" "slp2" } } */
 /* { dg-final { scan-tree-dump-times "extracting lane for live stmt" 2 "slp2" { xfail *-*-* } } } */
 /* { dg-final { scan-tree-dump-times " \\+ " 3 "optimized" } } */
index cd22932..dfae617 100644 (file)
@@ -49,7 +49,7 @@ bar (double x)
   return;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block part vectorized" 2 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */
 /* We want to vectorize as { a[0], a[1] } + { x*3, x+1 } and thus
    elide one add in each function.  */
 /* { dg-final { scan-tree-dump-times " \\+ " 4 "optimized" } } */
index 192b7dc..bb78e1b 100644 (file)
@@ -47,5 +47,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
   
index 98fe5ea..fa3e76d 100644 (file)
@@ -45,5 +45,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
   
index f12dc27..ebe8189 100644 (file)
@@ -47,5 +47,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
 
index 750d713..b653469 100644 (file)
@@ -48,5 +48,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { target vect_hw_misalign } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2"  { target vect_hw_misalign } } } */
   
index cf355ef..381593b 100644 (file)
@@ -47,5 +47,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 0 "slp2" } } */
   
index a5b643b..03a47fd 100644 (file)
@@ -49,5 +49,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { target vect_hw_misalign } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2"  { target vect_hw_misalign } } } */
   
index d022d5f..b4cc101 100644 (file)
@@ -46,5 +46,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { xfail  { vect_no_align && { ! vect_hw_misalign } } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2"  { xfail  { vect_no_align && { ! vect_hw_misalign } } } } } */
   
index 65d83a4..87ffc9b 100644 (file)
@@ -16,4 +16,4 @@ f (void)
   x[7] /= 9;
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" { xfail *-*-* } } } */
index 715c22a..dd17e8c 100644 (file)
@@ -11,4 +11,4 @@ f (void)
   x[3] += y[3] / z[3] * 2;
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target vect_int } } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" { target vect_int } } } */
index 0082b83..5a9fe42 100644 (file)
@@ -64,4 +64,4 @@ main (void)
 /* { dg-final { scan-tree-dump "demoting int to signed short" "slp2" { target { ! vect_widen_shift } } } } */
 /* { dg-final { scan-tree-dump "demoting int to unsigned short" "slp2" { target { ! vect_widen_shift } } } } */
 /* { dg-final { scan-tree-dump {\.AVG_FLOOR} "slp2" { target vect_avg_qi } } } */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" { target vect_hw_misalign } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { target vect_hw_misalign } } } */
index 042b7e9..15a94e6 100644 (file)
@@ -63,4 +63,4 @@ main (void)
 /* { dg-final { scan-tree-dump "demoting int to signed short" "slp2" { target { ! vect_widen_shift } } } } */
 /* { dg-final { scan-tree-dump "demoting int to unsigned short" "slp2" { target { ! vect_widen_shift } } } } */
 /* { dg-final { scan-tree-dump {\.AVG_FLOOR} "slp2" { target vect_avg_qi } } } */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" { target vect_hw_misalign } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { target vect_hw_misalign } } } */
index d32cb75..f6b99ea 100644 (file)
@@ -49,4 +49,4 @@ int main ()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_element_align && vect_pack_trunc } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp1" { target { vect_element_align && vect_pack_trunc } } } } */
index cfe654e..fc76700 100644 (file)
@@ -29,4 +29,4 @@ main (void)
    -mno-allow-movmisalign prevents vectorization.  On POWER8 and later,
    when vect_hw_misalign is true, vectorization occurs.  */
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target {{ ! powerpc*-*-* } || { powerpc*-*-* && vect_hw_misalign }} } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target {{ ! powerpc*-*-* } || { powerpc*-*-* && vect_hw_misalign }} } } } */
index ca25000..d3ac0de 100644 (file)
@@ -7,4 +7,4 @@ void foo ()
   a[0] = a[1] = a[2] = a[3] = a[4]= 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
index 0e4f1a7..4e3448e 100644 (file)
@@ -59,4 +59,4 @@ int main()
 
 /* We should also be able to use 2-lane SLP to initialize the real and
    imaginary components in the first loop of main.  */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 10 "slp1" } } */
index f5dc534..27cba9b 100644 (file)
@@ -22,6 +22,6 @@ void foo ()
    but we do want to vectorize the other two store groups.  But we may
    end up using scalar loads to vectorize the last group.  */
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 3 "slp2" } } */
 /* { dg-final { scan-tree-dump-times "BB vectorization with gaps at the end of a load is not supported" 1 "slp2" } } */
 /* { dg-final { scan-tree-dump-times " = c\\\[4\\\];" 1 "optimized" } } */
index f024dc7..dcba9a0 100644 (file)
@@ -89,4 +89,4 @@ f6 (int n)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 6 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 6 "slp1" } } */
index 11e8f0f..6b213d4 100644 (file)
@@ -61,4 +61,4 @@ f4 (double *p, double *q)
     }
 }
 
-/* { dg-final { scan-tree-dump-not "basic block vectorized" "slp1" } } */
+/* { dg-final { scan-tree-dump-not "optimized: basic block" "slp1" } } */
index 1cca1d0..793f185 100644 (file)
@@ -59,4 +59,4 @@ f4 (double *p, double *q, unsigned int start, unsigned int n)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 4 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 4 "slp1" } } */
index 1aa3c8d..599f718 100644 (file)
@@ -44,4 +44,4 @@ f3 (double *p, double *q, unsigned int start, unsigned int n)
     }
 }
 
-/* { dg-final { scan-tree-dump-not "basic block vectorized" "slp1" } } */
+/* { dg-final { scan-tree-dump-not "optimized: basic block" "slp1" } } */
index 104d3fb..7d82e94 100644 (file)
@@ -28,4 +28,4 @@ int e()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target { { x86_64-*-* i?86-*-* } && ilp32 } } } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" { target { { x86_64-*-* i?86-*-* } && ilp32 } } } } */
index 49e75d8..5a831ae 100644 (file)
@@ -16,5 +16,5 @@ v2df g(v2df a, v2df b)
 
 /* Verify we manage to vectorize this with using the original vectors
    and do not end up with any vector CTORs.  */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */
 /* { dg-final { scan-tree-dump-not "vect_cst" "slp2" } } */
index 0bfba01..931fd46 100644 (file)
@@ -10,4 +10,4 @@ v4f32 f(v4f32 a, v4f32 b)
   return (v4f32){a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]};
 }
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
index 5de4671..edcaf17 100644 (file)
@@ -14,4 +14,4 @@ void foo()
 
 /* The scalar shift argument should be extracted from the available vector.  */
 /* { dg-final { scan-tree-dump "BIT_FIELD_REF" "slp2" } } */
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
index 39c23c3..40a02ed 100644 (file)
@@ -41,4 +41,4 @@ main (int argc, char **argv)
 }
 
 /* { dg-final { scan-tree-dump-times "Basic block will be vectorized using SLP" 1 "slp2" } } */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */
index 36938d0..968cdf1 100644 (file)
@@ -39,4 +39,4 @@ main (int argc, char **argv)
 }
 
 /* { dg-final { scan-tree-dump-times "Basic block will be vectorized using SLP" 1 "slp2" } } */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
index 6ae9a89..fe36f90 100644 (file)
@@ -38,4 +38,4 @@ main (int argc, char **argv)
 }
 
 /* { dg-final { scan-tree-dump-times "Basic block will be vectorized using SLP" 1 "slp2" } } */
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */
index 915a962..df01918 100644 (file)
@@ -38,4 +38,4 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { xfail  { vect_no_align && { ! vect_hw_misalign } } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2"  { xfail  { vect_no_align && { ! vect_hw_misalign } } } } } */
index 5121a88..819c4f6 100644 (file)
@@ -25,4 +25,4 @@ foo ()
 }
 
 /* { dg-final { scan-tree-dump-not "vectorization is not profitable" "slp2" } } */
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
index 1c75c87..cfea872 100644 (file)
@@ -45,4 +45,4 @@ main ()
   return main1 ();
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
index 49a7c05..6d67d12 100644 (file)
@@ -63,4 +63,4 @@ main ()
   return main1 ();
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" { target vect_call_lrint } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { target vect_call_lrint } } } */
index c7f9cd3..2202362 100644 (file)
@@ -47,5 +47,5 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target vect_int_mult } } } */
   
index 8fe67f4..e837418 100644 (file)
@@ -13,4 +13,4 @@ A sum(A a,A b)
   return a;
 }
 
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" } } */
index ef379c4..dfa8977 100644 (file)
@@ -15,5 +15,5 @@ pack (double a, double aa)
 /* The function should be optimized to just return as arguments and
    result exactly overlap even when previously vectorized.  */
 
-/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
+/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
 /* { dg-final { scan-assembler-not "mov" } } */
index 65117f1..994ada6 100644 (file)
@@ -19,4 +19,4 @@ uint64_pair_t pair(int num)
 }
 
 /* See PR92266 for the XFAIL.  */
-/* { dg-final { scan-tree-dump-not "basic block vectorized" "slp2" { xfail ilp32 } } } */
+/* { dg-final { scan-tree-dump-not "optimized: basic block" "slp2" { xfail ilp32 } } } */
index 8f5b6d6..0c4e103 100644 (file)
@@ -8,4 +8,4 @@
       y(3)=y(3)+alpha*x(3)
       y(4)=y(4)+alpha*x(4)
       end
-! { dg-final { scan-tree-dump "basic block vectorized" "slp2" } }
+! { dg-final { scan-tree-dump "optimized: basic block" "slp2" } }
index e0614fb..568fc5d 100644 (file)
@@ -2407,14 +2407,15 @@ vect_analyze_slp_instance (vec_info *vinfo,
          bool res = vect_analyze_slp_instance (vinfo, bst_map, stmt_info,
                                                max_tree_size);
          /* If the first non-match was in the middle of a vector,
-            skip the rest of that vector.  */
+            skip the rest of that vector.  Do not bother to re-analyze
+            single stmt groups.  */
          if (group1_size < i)
            {
              i = group1_size + const_nunits;
-             if (i < group_size)
+             if (i + 1 < group_size)
                rest = vect_split_slp_store_group (rest, const_nunits);
            }
-         if (i < group_size)
+         if (i + 1 < group_size)
            res |= vect_analyze_slp_instance (vinfo, bst_map,
                                              rest, max_tree_size);
          return res;
index 37e36f5..626f0ce 100644 (file)
@@ -1052,9 +1052,6 @@ try_vectorize_loop_1 (hash_table<simduid_to_vf> *&simduid_to_vf_htab,
            }
          if (!require_loop_vectorize && vect_slp_bb (bb))
            {
-             if (dump_enabled_p ())
-               dump_printf_loc (MSG_NOTE, vect_location,
-                                "basic block vectorized\n");
              fold_loop_internal_call (loop_vectorized_call,
                                       boolean_true_node);
              loop_vectorized_call = NULL;
@@ -1429,11 +1426,7 @@ pass_slp_vectorize::execute (function *fun)
     }
 
   FOR_EACH_BB_FN (bb, fun)
-    {
-      if (vect_slp_bb (bb))
-       if (dump_enabled_p ())
-         dump_printf_loc (MSG_NOTE, vect_location, "basic block vectorized\n");
-    }
+    vect_slp_bb (bb);
 
   if (!in_loop_pipeline)
     {