diff options
author | Richard Biener <rguenther@suse.de> | 2014-06-23 16:51:10 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-06-23 16:51:10 +0000 |
commit | e5d8bd8c7734c24c23621db9563f7aae772dee97 (patch) | |
tree | 1b79b1e2ddf3b2cdf3e264677b82c0f0f36e7ea3 | |
parent | 47c2554f61d9b4e7e0326515ceef6f6169df6e78 (diff) | |
download | gcc-e5d8bd8c7734c24c23621db9563f7aae772dee97.zip gcc-e5d8bd8c7734c24c23621db9563f7aae772dee97.tar.gz gcc-e5d8bd8c7734c24c23621db9563f7aae772dee97.tar.bz2 |
tree-ssa-loop.c (gate_loop): New function.
2014-06-23 Richard Biener <rguenther@suse.de>
* tree-ssa-loop.c (gate_loop): New function.
(pass_tree_loop::gate): Call it.
(pass_data_tree_no_loop, pass_tree_no_loop,
make_pass_tree_no_loop): New.
* tree-vectorizer.c: Include tree-scalar-evolution.c
(pass_slp_vectorize::execute): Initialize loops and SCEV if
required.
(pass_slp_vectorize::clone): New method.
* timevar.def (TV_TREE_NOLOOP): New.
* tree-pass.h (make_pass_tree_no_loop): Declare.
* passes.def (pass_tree_no_loop): New pass group with
SLP vectorizer.
* g++.dg/vect/slp-pr50413.cc: Scan and cleanup appropriate SLP dumps.
* g++.dg/vect/slp-pr50819.cc: Likewise.
* g++.dg/vect/slp-pr56812.cc: Likewise.
* gcc.dg/vect/bb-slp-1.c: Likewise.
* gcc.dg/vect/bb-slp-10.c: Likewise.
* gcc.dg/vect/bb-slp-11.c: Likewise.
* gcc.dg/vect/bb-slp-13.c: Likewise.
* gcc.dg/vect/bb-slp-14.c: Likewise.
* gcc.dg/vect/bb-slp-15.c: Likewise.
* gcc.dg/vect/bb-slp-16.c: Likewise.
* gcc.dg/vect/bb-slp-17.c: Likewise.
* gcc.dg/vect/bb-slp-18.c: Likewise.
* gcc.dg/vect/bb-slp-19.c: Likewise.
* gcc.dg/vect/bb-slp-2.c: Likewise.
* gcc.dg/vect/bb-slp-20.c: Likewise.
* gcc.dg/vect/bb-slp-21.c: Likewise.
* gcc.dg/vect/bb-slp-22.c: Likewise.
* gcc.dg/vect/bb-slp-23.c: Likewise.
* gcc.dg/vect/bb-slp-24.c: Likewise.
* gcc.dg/vect/bb-slp-25.c: Likewise.
* gcc.dg/vect/bb-slp-26.c: Likewise.
* gcc.dg/vect/bb-slp-27.c: Likewise.
* gcc.dg/vect/bb-slp-28.c: Likewise.
* gcc.dg/vect/bb-slp-29.c: Likewise.
* gcc.dg/vect/bb-slp-3.c: Likewise.
* gcc.dg/vect/bb-slp-30.c: Likewise.
* gcc.dg/vect/bb-slp-31.c: Likewise.
* gcc.dg/vect/bb-slp-32.c: Likewise.
* gcc.dg/vect/bb-slp-4.c: Likewise.
* gcc.dg/vect/bb-slp-5.c: Likewise.
* gcc.dg/vect/bb-slp-6.c: Likewise.
* gcc.dg/vect/bb-slp-7.c: Likewise.
* gcc.dg/vect/bb-slp-8.c: Likewise.
* gcc.dg/vect/bb-slp-8a.c: Likewise.
* gcc.dg/vect/bb-slp-8b.c: Likewise.
* gcc.dg/vect/bb-slp-9.c: Likewise.
* gcc.dg/vect/bb-slp-cond-1.c: Likewise.
* gcc.dg/vect/bb-slp-pattern-1.c: Likewise.
* gcc.dg/vect/bb-slp-pattern-2.c: Likewise.
* gcc.dg/vect/fast-math-bb-slp-call-1.c: Likewise.
* gcc.dg/vect/fast-math-bb-slp-call-2.c: Likewise.
* gcc.dg/vect/fast-math-bb-slp-call-3.c: Likewise.
* gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Likewise.
* gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Likewise.
* gcc.dg/vect/pr26359.c: Likewise.
* gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Likewise.
From-SVN: r211904
53 files changed, 267 insertions, 98 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 06763f0..14d4b3f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2014-06-23 Richard Biener <rguenther@suse.de> + + * tree-ssa-loop.c (gate_loop): New function. + (pass_tree_loop::gate): Call it. + (pass_data_tree_no_loop, pass_tree_no_loop, + make_pass_tree_no_loop): New. + * tree-vectorizer.c: Include tree-scalar-evolution.c + (pass_slp_vectorize::execute): Initialize loops and SCEV if + required. + (pass_slp_vectorize::clone): New method. + * timevar.def (TV_TREE_NOLOOP): New. + * tree-pass.h (make_pass_tree_no_loop): Declare. + * passes.def (pass_tree_no_loop): New pass group with + SLP vectorizer. + 2014-06-23 H.J. Lu <hongjiu.lu@intel.com> PR target/61570 diff --git a/gcc/passes.def b/gcc/passes.def index 26b30c9..c574b4e 100644 --- a/gcc/passes.def +++ b/gcc/passes.def @@ -198,6 +198,8 @@ along with GCC; see the file COPYING3. If not see NEXT_PASS (pass_sink_code); NEXT_PASS (pass_asan); NEXT_PASS (pass_tsan); + /* Pass group that runs when 1) enabled, 2) there are loops + in the function. */ NEXT_PASS (pass_tree_loop); PUSH_INSERT_PASSES_WITHIN (pass_tree_loop) NEXT_PASS (pass_tree_loop_init); @@ -230,10 +232,18 @@ along with GCC; see the file COPYING3. If not see NEXT_PASS (pass_complete_unroll); NEXT_PASS (pass_slp_vectorize); NEXT_PASS (pass_loop_prefetch); + /* Run IVOPTs after the last pass that uses data-reference analysis + as that doesn't handle TARGET_MEM_REFs. */ NEXT_PASS (pass_iv_optimize); NEXT_PASS (pass_lim); NEXT_PASS (pass_tree_loop_done); POP_INSERT_PASSES () + /* Pass group that runs when pass_tree_loop is disabled or there + are no loops in the function. */ + NEXT_PASS (pass_tree_no_loop); + PUSH_INSERT_PASSES_WITHIN (pass_tree_no_loop) + NEXT_PASS (pass_slp_vectorize); + POP_INSERT_PASSES () NEXT_PASS (pass_lower_vector_ssa); NEXT_PASS (pass_cse_reciprocals); NEXT_PASS (pass_reassoc); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d623f6e..ad97d0b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,52 @@ +2014-06-23 Richard Biener <rguenther@suse.de> + + * g++.dg/vect/slp-pr50413.cc: Scan and cleanup appropriate SLP dumps. + * g++.dg/vect/slp-pr50819.cc: Likewise. + * g++.dg/vect/slp-pr56812.cc: Likewise. + * gcc.dg/vect/bb-slp-1.c: Likewise. + * gcc.dg/vect/bb-slp-10.c: Likewise. + * gcc.dg/vect/bb-slp-11.c: Likewise. + * gcc.dg/vect/bb-slp-13.c: Likewise. + * gcc.dg/vect/bb-slp-14.c: Likewise. + * gcc.dg/vect/bb-slp-15.c: Likewise. + * gcc.dg/vect/bb-slp-16.c: Likewise. + * gcc.dg/vect/bb-slp-17.c: Likewise. + * gcc.dg/vect/bb-slp-18.c: Likewise. + * gcc.dg/vect/bb-slp-19.c: Likewise. + * gcc.dg/vect/bb-slp-2.c: Likewise. + * gcc.dg/vect/bb-slp-20.c: Likewise. + * gcc.dg/vect/bb-slp-21.c: Likewise. + * gcc.dg/vect/bb-slp-22.c: Likewise. + * gcc.dg/vect/bb-slp-23.c: Likewise. + * gcc.dg/vect/bb-slp-24.c: Likewise. + * gcc.dg/vect/bb-slp-25.c: Likewise. + * gcc.dg/vect/bb-slp-26.c: Likewise. + * gcc.dg/vect/bb-slp-27.c: Likewise. + * gcc.dg/vect/bb-slp-28.c: Likewise. + * gcc.dg/vect/bb-slp-29.c: Likewise. + * gcc.dg/vect/bb-slp-3.c: Likewise. + * gcc.dg/vect/bb-slp-30.c: Likewise. + * gcc.dg/vect/bb-slp-31.c: Likewise. + * gcc.dg/vect/bb-slp-32.c: Likewise. + * gcc.dg/vect/bb-slp-4.c: Likewise. + * gcc.dg/vect/bb-slp-5.c: Likewise. + * gcc.dg/vect/bb-slp-6.c: Likewise. + * gcc.dg/vect/bb-slp-7.c: Likewise. + * gcc.dg/vect/bb-slp-8.c: Likewise. + * gcc.dg/vect/bb-slp-8a.c: Likewise. + * gcc.dg/vect/bb-slp-8b.c: Likewise. + * gcc.dg/vect/bb-slp-9.c: Likewise. + * gcc.dg/vect/bb-slp-cond-1.c: Likewise. + * gcc.dg/vect/bb-slp-pattern-1.c: Likewise. + * gcc.dg/vect/bb-slp-pattern-2.c: Likewise. + * gcc.dg/vect/fast-math-bb-slp-call-1.c: Likewise. + * gcc.dg/vect/fast-math-bb-slp-call-2.c: Likewise. + * gcc.dg/vect/fast-math-bb-slp-call-3.c: Likewise. + * gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Likewise. + * gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Likewise. + * gcc.dg/vect/pr26359.c: Likewise. + * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Likewise. + 2014-06-23 Marek Polacek <polacek@redhat.com> * c-c++-common/pr49706-2.c: New test. diff --git a/gcc/testsuite/g++.dg/vect/slp-pr50413.cc b/gcc/testsuite/g++.dg/vect/slp-pr50413.cc index 6e69f11..4ba606c 100644 --- a/gcc/testsuite/g++.dg/vect/slp-pr50413.cc +++ b/gcc/testsuite/g++.dg/vect/slp-pr50413.cc @@ -160,6 +160,6 @@ void shift(unsigned char t) V.bitmap.b96 = t; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/g++.dg/vect/slp-pr50819.cc b/gcc/testsuite/g++.dg/vect/slp-pr50819.cc index 515d774..60fd156 100644 --- a/gcc/testsuite/g++.dg/vect/slp-pr50819.cc +++ b/gcc/testsuite/g++.dg/vect/slp-pr50819.cc @@ -49,5 +49,5 @@ const & v2) { res = res + s*(v1+v2); } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/g++.dg/vect/slp-pr56812.cc b/gcc/testsuite/g++.dg/vect/slp-pr56812.cc index 9c0b2b8..a0155a9 100644 --- a/gcc/testsuite/g++.dg/vect/slp-pr56812.cc +++ b/gcc/testsuite/g++.dg/vect/slp-pr56812.cc @@ -17,5 +17,5 @@ void mydata::Set (float x) data[i] = x;
}
-/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
-/* { dg-final { cleanup-tree-dump "slp" } } */
+/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
+/* { dg-final { cleanup-tree-dump "slp1" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-1.c b/gcc/testsuite/gcc.dg/vect/bb-slp-1.c index 1caa3cf..138a8dd 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-1.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-1.c @@ -56,6 +56,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-10.c b/gcc/testsuite/gcc.dg/vect/bb-slp-10.c index 658bf03..a1850ed 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-10.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-10.c @@ -49,7 +49,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "unsupported alignment in basic block." 1 "slp" { xfail vect_element_align } } } */ -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "unsupported alignment in basic block." 1 "slp2" { xfail vect_element_align } } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_element_align } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-11.c b/gcc/testsuite/gcc.dg/vect/bb-slp-11.c index 3c350a7..1ae3141 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-11.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-11.c @@ -48,6 +48,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect64 } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect64 } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-13.c b/gcc/testsuite/gcc.dg/vect/bb-slp-13.c index 88838ce..9c153a1 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-13.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-13.c @@ -46,6 +46,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-14.c b/gcc/testsuite/gcc.dg/vect/bb-slp-14.c index d46dead..a55c48e 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-14.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-14.c @@ -47,6 +47,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-15.c b/gcc/testsuite/gcc.dg/vect/bb-slp-15.c index fd065e6..93d792d 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-15.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-15.c @@ -51,6 +51,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-16.c b/gcc/testsuite/gcc.dg/vect/bb-slp-16.c index 0cbec65..5107408 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-16.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-16.c @@ -65,6 +65,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-17.c b/gcc/testsuite/gcc.dg/vect/bb-slp-17.c index 3f14ff4..0a92ee7 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-17.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-17.c @@ -57,6 +57,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-18.c b/gcc/testsuite/gcc.dg/vect/bb-slp-18.c index 7d73dbd..21b1dfd 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-18.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-18.c @@ -46,6 +46,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-19.c b/gcc/testsuite/gcc.dg/vect/bb-slp-19.c index 576bbc1..021a4ee 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-19.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-19.c @@ -53,6 +53,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail *-*-* } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-2.c b/gcc/testsuite/gcc.dg/vect/bb-slp-2.c index accc472..8947f5e 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-2.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-2.c @@ -53,6 +53,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-20.c b/gcc/testsuite/gcc.dg/vect/bb-slp-20.c index a7978a7..c171869 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-20.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-20.c @@ -63,7 +63,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-21.c b/gcc/testsuite/gcc.dg/vect/bb-slp-21.c index 8ad7145..5b2247b 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-21.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-21.c @@ -63,8 +63,8 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp" { target { ! {vect_int_mult } } } } } */ -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp2" { target { ! {vect_int_mult } } } } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-22.c b/gcc/testsuite/gcc.dg/vect/bb-slp-22.c index e425dc9..597f2ce 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-22.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-22.c @@ -63,7 +63,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { ! {vect_int_mult } } } } } */ -/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { ! {vect_int_mult } } } } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-23.c b/gcc/testsuite/gcc.dg/vect/bb-slp-23.c index 35f5186..adb6979 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-23.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-23.c @@ -51,6 +51,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-24.c b/gcc/testsuite/gcc.dg/vect/bb-slp-24.c index d0c1d69..5414838 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-24.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-24.c @@ -54,6 +54,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect_element_align } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-25.c b/gcc/testsuite/gcc.dg/vect/bb-slp-25.c index 737b3b0..92137d9 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-25.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-25.c @@ -54,6 +54,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect_element_align } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-26.c b/gcc/testsuite/gcc.dg/vect/bb-slp-26.c index 881f320..f33a94a 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-26.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-26.c @@ -55,6 +55,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect64 } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect64 } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-27.c b/gcc/testsuite/gcc.dg/vect/bb-slp-27.c index 7fcc1e6..ae6ff83 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-27.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-27.c @@ -44,6 +44,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-28.c b/gcc/testsuite/gcc.dg/vect/bb-slp-28.c index 650c50e..2ef0667 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-28.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-28.c @@ -66,6 +66,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_int_mult && { vect_pack_trunc && vect_unpack } } } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_int_mult && { vect_pack_trunc && vect_unpack } } } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-29.c b/gcc/testsuite/gcc.dg/vect/bb-slp-29.c index c5b3134..dcc40e5 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-29.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-29.c @@ -54,6 +54,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_int_mult && vect_element_align } } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_int_mult && vect_element_align } } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-3.c b/gcc/testsuite/gcc.dg/vect/bb-slp-3.c index 093389f..0fbd3b2 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-3.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-3.c @@ -42,6 +42,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-30.c b/gcc/testsuite/gcc.dg/vect/bb-slp-30.c index 86da55a..11c0608 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-30.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-30.c @@ -43,5 +43,5 @@ test1(void) int main() { test1(); return a[21]; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-31.c b/gcc/testsuite/gcc.dg/vect/bb-slp-31.c index 7ea3412..017eba6 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-31.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-31.c @@ -9,5 +9,5 @@ void f(){ a[1]=1+2*a[1]*a[1]; } -/* { dg-final { scan-tree-dump "basic block vectorized" "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-32.c b/gcc/testsuite/gcc.dg/vect/bb-slp-32.c index 6d69d15..2e29159 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-32.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-32.c @@ -19,5 +19,5 @@ int foo (int *p) return tem0 + tem1 + tem2 + tem3; } -/* { dg-final { scan-tree-dump "vectorization is not profitable" "slp" { xfail vect_no_align } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump "vectorization is not profitable" "slp2" { xfail vect_no_align } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-4.c b/gcc/testsuite/gcc.dg/vect/bb-slp-4.c index 2c4b62d..9958959 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-4.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-4.c @@ -38,6 +38,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-5.c b/gcc/testsuite/gcc.dg/vect/bb-slp-5.c index ca093e7..10a410b 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-5.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-5.c @@ -47,6 +47,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-6.c b/gcc/testsuite/gcc.dg/vect/bb-slp-6.c index c233a9d..6ab8183 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-6.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-6.c @@ -45,6 +45,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-7.c b/gcc/testsuite/gcc.dg/vect/bb-slp-7.c index b7b90f0..275f1d3 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-7.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-7.c @@ -46,6 +46,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-8.c b/gcc/testsuite/gcc.dg/vect/bb-slp-8.c index 303fe3e..5012d02 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-8.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-8.c @@ -48,6 +48,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_hw_misalign } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_hw_misalign } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c b/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c index 55a6a81..87b6cb3 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c @@ -47,6 +47,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c b/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c index 8c5c5ab..13eba70 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c @@ -49,6 +49,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_hw_misalign } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_hw_misalign } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-9.c b/gcc/testsuite/gcc.dg/vect/bb-slp-9.c index 9f1a587..d55f388 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-9.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-9.c @@ -46,6 +46,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail vect_no_align } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { xfail vect_no_align } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c b/gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c index 86376b4..11415c8 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c @@ -41,6 +41,7 @@ int main () return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect_element_align } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c index ff520c0..205c0b0 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c @@ -48,7 +48,8 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */ -/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 8 "slp" { target vect_widen_mult_hi_to_si_pattern } } } */ -/* { dg-final { scan-tree-dump-times "pattern recognized" 8 "slp" { target vect_widen_mult_hi_to_si_pattern } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp2" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */ +/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 8 "slp2" { target vect_widen_mult_hi_to_si_pattern } } } */ +/* { dg-final { scan-tree-dump-times "pattern recognized" 8 "slp2" { target vect_widen_mult_hi_to_si_pattern } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c index 545c08d..11aeb4a 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c @@ -48,5 +48,6 @@ int main () return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_element_align && vect_pack_trunc } } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_element_align && vect_pack_trunc } } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c index 4e8d71b..e1bc1a8 100644 --- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c +++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c @@ -41,6 +41,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { xfail vect_no_align } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp2" { xfail vect_no_align } } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c b/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c index c138a78..5fa50d6 100644 --- a/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c +++ b/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c @@ -45,5 +45,6 @@ main () return main1 (); } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_call_copysignf && vect_call_sqrtf } } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_call_copysignf && vect_call_sqrtf } } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c b/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c index c126c1c..982b32dc 100644 --- a/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c +++ b/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c @@ -63,5 +63,6 @@ main () return main1 (); } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" { target vect_call_lrint } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" { target vect_call_lrint } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c b/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c index 5878d41..92cadde 100644 --- a/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c +++ b/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c @@ -65,4 +65,5 @@ int main() return 0; } -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c b/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c index 49274f8..c75ae5e 100644 --- a/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c +++ b/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c @@ -47,6 +47,7 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ +/* { dg-final { cleanup-tree-dump "slp1" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c b/gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c index 90dcd84..6d70bd0 100644 --- a/gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c +++ b/gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c @@ -13,5 +13,5 @@ A sum(A a,A b) return a; } -/* { dg-final { scan-tree-dump-times "not vectorized: more than one data ref in stmt" 0 "slp" } } */ -/* { dg-final { cleanup-tree-dump "slp" } } */ +/* { dg-final { scan-tree-dump-times "not vectorized: more than one data ref in stmt" 0 "slp2" } } */ +/* { dg-final { cleanup-tree-dump "slp2" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr26359.c b/gcc/testsuite/gcc.dg/vect/pr26359.c index f4e2a37..7a0cb0d 100644 --- a/gcc/testsuite/gcc.dg/vect/pr26359.c +++ b/gcc/testsuite/gcc.dg/vect/pr26359.c @@ -13,5 +13,5 @@ foo () { } /* { dg-final { scan-tree-dump-times "Deleting : vect_" 0 "dce5" } } */ -/* { dg-final { cleanup-tree-dump "dce" } } */ +/* { dg-final { cleanup-tree-dump "dce5" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/timevar.def b/gcc/timevar.def index cbb64d5..6b1b6df 100644 --- a/gcc/timevar.def +++ b/gcc/timevar.def @@ -162,6 +162,7 @@ DEFTIMEVAR (TV_TREE_CALL_CDCE , "tree buildin call DCE") DEFTIMEVAR (TV_TREE_DSE , "tree DSE") DEFTIMEVAR (TV_TREE_MERGE_PHI , "PHI merge") DEFTIMEVAR (TV_TREE_LOOP , "tree loop optimization") +DEFTIMEVAR (TV_TREE_NOLOOP , "loopless fn") DEFTIMEVAR (TV_TREE_LOOP_BOUNDS , "tree loop bounds") DEFTIMEVAR (TV_LIM , "tree loop invariant motion") DEFTIMEVAR (TV_TREE_LOOP_IVCANON , "tree canonical iv") diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index bdaf673..ec5f367 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -354,6 +354,7 @@ extern gimple_opt_pass *make_pass_early_ipa_sra (gcc::context *ctxt); extern gimple_opt_pass *make_pass_tail_recursion (gcc::context *ctxt); extern gimple_opt_pass *make_pass_tail_calls (gcc::context *ctxt); extern gimple_opt_pass *make_pass_tree_loop (gcc::context *ctxt); +extern gimple_opt_pass *make_pass_tree_no_loop (gcc::context *ctxt); extern gimple_opt_pass *make_pass_tree_loop_init (gcc::context *ctxt); extern gimple_opt_pass *make_pass_lim (gcc::context *ctxt); extern gimple_opt_pass *make_pass_tree_unswitch (gcc::context *ctxt); diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index b49ed8a..9da77a9 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -42,6 +42,27 @@ along with GCC; see the file COPYING3. If not see #include "diagnostic-core.h" #include "tree-vectorizer.h" + +/* Gate for loop pass group. The group is controlled by -ftree-loop-optimize + but we also avoid running it when the IL doesn't contain any loop. */ + +static bool +gate_loop (function *fn) +{ + if (!flag_tree_loop_optimize) + return false; + + /* For -fdump-passes which runs before loop discovery print the + state of -ftree-loop-optimize. */ + if (!loops_for_fn (fn)) + return true; + + /* Make sure to drop / re-discover loops when necessary. */ + if (loops_state_satisfies_p (LOOPS_NEED_FIXUP)) + fix_loop_structure (NULL); + return number_of_loops (fn) > 1; +} + /* The loop superpass. */ namespace { @@ -68,7 +89,7 @@ public: {} /* opt_pass methods: */ - virtual bool gate (function *) { return flag_tree_loop_optimize != 0; } + virtual bool gate (function *fn) { return gate_loop (fn); } }; // class pass_tree_loop @@ -80,6 +101,45 @@ make_pass_tree_loop (gcc::context *ctxt) return new pass_tree_loop (ctxt); } +/* The no-loop superpass. */ + +namespace { + +const pass_data pass_data_tree_no_loop = +{ + GIMPLE_PASS, /* type */ + "no_loop", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + false, /* has_execute */ + TV_TREE_NOLOOP, /* tv_id */ + PROP_cfg, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0, /* todo_flags_finish */ +}; + +class pass_tree_no_loop : public gimple_opt_pass +{ +public: + pass_tree_no_loop (gcc::context *ctxt) + : gimple_opt_pass (pass_data_tree_no_loop, ctxt) + {} + + /* opt_pass methods: */ + virtual bool gate (function *fn) { return !gate_loop (fn); } + +}; // class pass_tree_no_loop + +} // anon namespace + +gimple_opt_pass * +make_pass_tree_no_loop (gcc::context *ctxt) +{ + return new pass_tree_no_loop (ctxt); +} + + /* Loop optimizer initialization. */ namespace { diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index e2939b1..f10e621 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -82,6 +82,8 @@ along with GCC; see the file COPYING3. If not see #include "tree-ssa-propagate.h" #include "dbgcnt.h" #include "gimple-fold.h" +#include "tree-scalar-evolution.h" + /* Loop or bb location. */ source_location vect_location; @@ -610,6 +612,7 @@ public: {} /* opt_pass methods: */ + opt_pass * clone () { return new pass_slp_vectorize (m_ctxt); } virtual bool gate (function *) { return flag_tree_slp_vectorize != 0; } virtual unsigned int execute (function *); @@ -620,6 +623,13 @@ pass_slp_vectorize::execute (function *fun) { basic_block bb; + bool in_loop_pipeline = scev_initialized_p (); + if (!in_loop_pipeline) + { + loop_optimizer_init (LOOPS_NORMAL); + scev_initialize (); + } + init_stmt_vec_info_vec (); FOR_EACH_BB_FN (bb, fun) @@ -639,6 +649,13 @@ pass_slp_vectorize::execute (function *fun) } free_stmt_vec_info_vec (); + + if (!in_loop_pipeline) + { + scev_finalize (); + loop_optimizer_finalize (); + } + return 0; } |