On Wed, 18 Jun 2014, Jeff Law wrote: > On 06/18/14 04:42, Richard Biener wrote: > > > > The following aims at reducing the number of pointless passes we run > > on functions containing no loops. Those are at least two copyprop > > and one dce pass (two dce passes when vectorization is enabled, > > three dce passes and an additional copyprop pass when any graphite > > optimization is enabled). > > > > Simply gating pass_tree_loop on number_of_loops () > 1 would disable > > basic-block vectorization on loopless functions. Moving > > basic-block vectorization out of pass_tree_loop works to the extent > > that you'd need to move IVOPTs as well as data-ref analysis cannot > > cope with TARGET_MEM_REFs. > > > > So the following introduces a pass_tree_no_loop pass group which > > is enabled whenever the pass_tree_loop group is disabled. > > As followup this would allow to skip cleanup work we do after the loop > > pipeline just to cleanup after it. > > > > Any comments? Does such followup sound realistic or would it be > > better to take the opportunity to move IVOPTs a bit closer to > > RTL expansion and avoid that "pass_tree_no_loop hack"? > Sounds good. I've always believed that each pass should be bubbling back up > some kind of status about what it did/found as well. > > It was more of an RTL issue, but we had a certain commercial testsuite which > created large loopless tests (*) that consumed vast quantities of wall clock > time. I always wanted the RTL loop passes to signal back to toplev.c that no > loops were found, which would in turn be used to say "we really don't need > cse-after-loop and friends". > It's certainly more complex these days, but I'd still like to be able to do > such things. > > Regardless, that's well outside the scope of what you're trying to accomplish.
Not really - it's just the start of a series of (possible) patches. I want to cut down the post-loop pass pipeline for functions without loops. But indeed we may want to apply the same trick to RTL. The following is what I ended up applying (ugh, we need a more elegant solution for those dump naming / cleanup issues). Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2014-06-23 Richard Biener <rguent...@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. Index: gcc/tree-ssa-loop.c =================================================================== *** gcc/tree-ssa-loop.c.orig 2014-06-18 14:57:20.173498927 +0200 --- gcc/tree-ssa-loop.c 2014-06-23 13:45:58.744051019 +0200 *************** along with GCC; see the file COPYING3. *** 42,47 **** --- 42,68 ---- #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 { *************** public: *** 68,74 **** {} /* opt_pass methods: */ ! virtual bool gate (function *) { return flag_tree_loop_optimize != 0; } }; // class pass_tree_loop --- 89,95 ---- {} /* opt_pass methods: */ ! virtual bool gate (function *fn) { return gate_loop (fn); } }; // class pass_tree_loop *************** make_pass_tree_loop (gcc::context *ctxt) *** 80,85 **** --- 101,145 ---- 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 { Index: gcc/tree-vectorizer.c =================================================================== *** gcc/tree-vectorizer.c.orig 2014-06-18 14:57:20.173498927 +0200 --- gcc/tree-vectorizer.c 2014-06-23 13:33:39.456101918 +0200 *************** along with GCC; see the file COPYING3. *** 82,87 **** --- 82,89 ---- #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; *************** public: *** 610,615 **** --- 612,618 ---- {} /* 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 *); *************** pass_slp_vectorize::execute (function *f *** 620,625 **** --- 623,635 ---- { 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) *************** pass_slp_vectorize::execute (function *f *** 639,644 **** --- 649,661 ---- } free_stmt_vec_info_vec (); + + if (!in_loop_pipeline) + { + scev_finalize (); + loop_optimizer_finalize (); + } + return 0; } Index: gcc/timevar.def =================================================================== *** gcc/timevar.def.orig 2014-06-18 14:57:20.173498927 +0200 --- gcc/timevar.def 2014-06-23 13:33:39.457101918 +0200 *************** DEFTIMEVAR (TV_TREE_CALL_CDCE , "tr *** 162,167 **** --- 162,168 ---- 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") Index: gcc/tree-pass.h =================================================================== *** gcc/tree-pass.h.orig 2014-06-18 14:57:20.173498927 +0200 --- gcc/tree-pass.h 2014-06-23 13:33:39.457101918 +0200 *************** extern gimple_opt_pass *make_pass_early_ *** 354,359 **** --- 354,360 ---- 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); Index: gcc/passes.def =================================================================== *** gcc/passes.def.orig 2014-06-18 14:57:20.173498927 +0200 --- gcc/passes.def 2014-06-23 13:33:39.468101917 +0200 *************** along with GCC; see the file COPYING3. *** 198,203 **** --- 198,205 ---- 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); *************** along with GCC; see the file COPYING3. *** 230,239 **** --- 232,249 ---- 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); Index: gcc/testsuite/g++.dg/vect/slp-pr50413.cc =================================================================== *** gcc/testsuite/g++.dg/vect/slp-pr50413.cc.orig 2013-08-30 09:55:27.233781584 +0200 --- gcc/testsuite/g++.dg/vect/slp-pr50413.cc 2014-06-23 13:39:38.229077217 +0200 *************** void shift(unsigned char t) *** 160,165 **** V.bitmap.b96 = t; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 160,165 ---- V.bitmap.b96 = t; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/g++.dg/vect/slp-pr50819.cc =================================================================== *** gcc/testsuite/g++.dg/vect/slp-pr50819.cc.orig 2013-08-30 09:55:27.234781596 +0200 --- gcc/testsuite/g++.dg/vect/slp-pr50819.cc 2014-06-23 13:40:04.382075416 +0200 *************** const & v2) { *** 49,53 **** res = res + s*(v1+v2); } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 49,53 ---- res = res + s*(v1+v2); } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/g++.dg/vect/slp-pr56812.cc =================================================================== *** gcc/testsuite/g++.dg/vect/slp-pr56812.cc.orig 2013-10-29 15:15:40.585678487 +0100 --- gcc/testsuite/g++.dg/vect/slp-pr56812.cc 2014-06-23 13:40:28.401073763 +0200 *************** void mydata::Set (float x) *** 17,21 **** data[i] = x; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 17,21 ---- data[i] = x; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */ ! /* { dg-final { cleanup-tree-dump "slp1" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-1.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-1.c.orig 2013-08-30 09:55:27.136780433 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-1.c 2014-06-23 14:05:12.432971589 +0200 *************** int main (void) *** 56,61 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 56,62 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */ ! /* { dg-final { cleanup-tree-dump "slp1" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-10.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-10.c.orig 2013-08-30 09:55:27.136780433 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-10.c 2014-06-23 14:05:23.580970821 +0200 *************** int main (void) *** 49,55 **** 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" } } */ --- 49,55 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-11.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-11.c.orig 2013-08-30 09:55:27.137780445 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-11.c 2014-06-23 13:48:32.108040460 +0200 *************** int main (void) *** 48,53 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect64 } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 48,53 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect64 } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-13.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-13.c.orig 2013-08-30 09:55:27.126780313 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-13.c 2014-06-23 13:48:50.026039226 +0200 *************** int main (void) *** 46,51 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 46,51 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-14.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-14.c.orig 2013-08-30 09:55:27.127780325 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-14.c 2014-06-23 13:49:08.409037961 +0200 *************** int main (void) *** 47,52 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 47,52 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-15.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-15.c.orig 2013-08-30 09:55:27.131780373 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-15.c 2014-06-23 13:49:21.367037069 +0200 *************** int main (void) *** 51,56 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 51,56 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-16.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-16.c.orig 2013-08-30 09:55:27.132780385 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-16.c 2014-06-23 14:05:33.215970158 +0200 *************** int main (void) *** 65,70 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 65,71 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */ ! /* { dg-final { cleanup-tree-dump "slp1" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-17.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-17.c.orig 2013-08-30 09:55:27.133780397 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-17.c 2014-06-23 13:49:54.129034813 +0200 *************** int main (void) *** 57,62 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 57,62 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-18.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-18.c.orig 2013-08-30 09:55:27.134780409 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-18.c 2014-06-23 13:50:06.610033954 +0200 *************** int main (void) *** 46,51 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 46,51 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-19.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-19.c.orig 2013-08-30 09:55:27.135780421 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-19.c 2014-06-23 13:50:20.741032981 +0200 *************** int main (void) *** 53,58 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail *-*-* } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 53,58 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { xfail *-*-* } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-2.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-2.c.orig 2013-08-30 09:55:27.137780445 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-2.c 2014-06-23 14:05:44.829969358 +0200 *************** int main (void) *** 53,58 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 53,59 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */ ! /* { dg-final { cleanup-tree-dump "slp1" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-20.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-20.c.orig 2013-08-30 09:55:27.137780445 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-20.c 2014-06-23 13:50:47.792031118 +0200 *************** int main (void) *** 63,69 **** 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" } } */ --- 63,69 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-21.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-21.c.orig 2013-08-30 09:55:27.126780313 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-21.c 2014-06-23 13:51:02.554030102 +0200 *************** int main (void) *** 63,70 **** 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" } } */ --- 63,70 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-22.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-22.c.orig 2013-08-30 09:55:27.127780325 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-22.c 2014-06-23 13:51:18.159029028 +0200 *************** int main (void) *** 63,69 **** 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" } } */ --- 63,69 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-23.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-23.c.orig 2013-08-30 09:55:27.131780373 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-23.c 2014-06-23 13:51:32.879028014 +0200 *************** int main (void) *** 51,56 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 51,56 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-24.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-24.c.orig 2013-08-30 09:55:27.131780373 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-24.c 2014-06-23 14:30:13.534868240 +0200 *************** int main (void) *** 54,59 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 54,60 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-25.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-25.c.orig 2013-08-30 09:55:27.132780385 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-25.c 2014-06-23 14:30:28.828867187 +0200 *************** int main (void) *** 54,59 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 54,60 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-26.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-26.c.orig 2013-08-30 09:55:27.133780397 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-26.c 2014-06-23 14:30:34.141866821 +0200 *************** int main (void) *** 55,60 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect64 } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 55,61 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-27.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-27.c.orig 2013-08-30 09:55:27.134780409 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-27.c 2014-06-23 14:30:39.003866486 +0200 *************** int main (void) *** 44,49 **** 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" } } */ --- 44,50 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-28.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-28.c.orig 2013-08-30 09:55:27.135780421 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-28.c 2014-06-23 14:30:46.722865955 +0200 *************** int main (void) *** 66,71 **** 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" } } */ --- 66,72 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-29.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-29.c.orig 2013-08-30 09:55:27.135780421 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-29.c 2014-06-23 14:30:53.316865501 +0200 *************** int main (void) *** 54,59 **** 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" } } */ --- 54,60 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-3.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-3.c.orig 2013-08-30 09:55:27.137780445 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-3.c 2014-06-23 13:53:36.125019529 +0200 *************** int main (void) *** 42,47 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 42,47 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-30.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-30.c.orig 2013-08-30 09:55:27.126780313 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-30.c 2014-06-23 13:53:46.675018802 +0200 *************** test1(void) *** 43,47 **** int main() { test1(); return a[21]; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 43,47 ---- int main() { test1(); return a[21]; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-31.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-31.c.orig 2013-10-10 14:15:51.280493835 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-31.c 2014-06-23 13:53:51.749018453 +0200 *************** void f(){ *** 9,13 **** a[1]=1+2*a[1]*a[1]; } ! /* { dg-final { scan-tree-dump "basic block vectorized" "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 9,13 ---- a[1]=1+2*a[1]*a[1]; } ! /* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-32.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-32.c.orig 2013-10-29 15:15:40.532677912 +0100 --- gcc/testsuite/gcc.dg/vect/bb-slp-32.c 2014-06-23 13:53:56.878018100 +0200 *************** int foo (int *p) *** 19,23 **** 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" } } */ --- 19,23 ---- return tem0 + tem1 + tem2 + tem3; } ! /* { dg-final { scan-tree-dump "vectorization is not profitable" "slp2" { xfail vect_no_align } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-4.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-4.c.orig 2013-08-30 09:55:27.126780313 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-4.c 2014-06-23 13:54:04.122017601 +0200 *************** int main (void) *** 38,43 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 38,43 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-5.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-5.c.orig 2013-08-30 09:55:27.130780361 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-5.c 2014-06-23 13:54:10.426017167 +0200 *************** int main (void) *** 47,52 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 47,52 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-6.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-6.c.orig 2013-08-30 09:55:27.131780373 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-6.c 2014-06-23 13:54:15.672016806 +0200 *************** int main (void) *** 45,50 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 45,50 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-7.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-7.c.orig 2013-08-30 09:55:27.132780385 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-7.c 2014-06-23 13:54:21.958016373 +0200 *************** int main (void) *** 46,51 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 46,51 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-8.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-8.c.orig 2013-08-30 09:55:27.133780397 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-8.c 2014-06-23 13:54:29.503015854 +0200 *************** int main (void) *** 48,53 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_hw_misalign } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 48,53 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_hw_misalign } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-8a.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-8a.c.orig 2013-08-30 09:55:27.135780421 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-8a.c 2014-06-23 13:54:35.707015427 +0200 *************** int main (void) *** 47,52 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 47,52 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-8b.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-8b.c.orig 2013-08-30 09:55:27.136780433 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-8b.c 2014-06-23 13:54:40.903015069 +0200 *************** int main (void) *** 49,54 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_hw_misalign } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 49,54 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_hw_misalign } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-9.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-9.c.orig 2013-08-30 09:55:27.134780409 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-9.c 2014-06-23 13:54:49.587014471 +0200 *************** int main (void) *** 46,51 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail vect_no_align } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 46,51 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { xfail vect_no_align } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c.orig 2013-08-30 09:55:27.136780433 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c 2014-06-23 14:31:03.958864768 +0200 *************** int main () *** 41,46 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 41,47 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c.orig 2012-03-16 10:54:03.000000000 +0100 --- gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c 2014-06-23 14:06:31.460966148 +0200 *************** int main (void) *** 48,54 **** 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" } } */ --- 48,55 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c =================================================================== *** gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c.orig 2013-08-30 09:55:27.134780409 +0200 --- gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c 2014-06-23 14:31:12.229864199 +0200 *************** int main () *** 48,52 **** 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" } } */ --- 48,53 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c =================================================================== *** gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c.orig 2013-08-30 09:55:27.132780385 +0200 --- gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c 2014-06-23 14:31:25.106863312 +0200 *************** main () *** 45,49 **** 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" } } */ --- 45,50 ---- return main1 (); } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c =================================================================== *** gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c.orig 2013-08-30 09:55:27.133780397 +0200 --- gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c 2014-06-23 14:31:32.741862787 +0200 *************** main () *** 63,67 **** return main1 (); } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" { target vect_call_lrint } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 63,68 ---- return main1 (); } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c =================================================================== *** gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c.orig 2013-03-13 11:39:27.969477882 +0100 --- gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c 2014-06-23 14:03:08.341980132 +0200 *************** int main() *** 65,68 **** return 0; } ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 65,69 ---- return 0; } ! /* { dg-final { cleanup-tree-dump "slp1" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c =================================================================== *** gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c.orig 2013-08-30 09:55:27.134780409 +0200 --- gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c 2014-06-23 14:03:35.684978250 +0200 *************** int main (void) *** 47,52 **** return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */ ! /* { dg-final { cleanup-tree-dump "slp" } } */ --- 47,53 ---- return 0; } ! /* { 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" } } */ Index: gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c =================================================================== *** gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c.orig 2013-04-04 15:31:59.774876073 +0200 --- gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c 2014-06-23 14:04:13.962975614 +0200 *************** A sum(A a,A b) *** 13,17 **** 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" } } */ --- 13,17 ---- return a; } ! /* { dg-final { scan-tree-dump-times "not vectorized: more than one data ref in stmt" 0 "slp2" } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */ Index: gcc/testsuite/gcc.dg/vect/pr26359.c =================================================================== *** gcc/testsuite/gcc.dg/vect/pr26359.c.orig 2014-06-18 13:43:34.726803613 +0200 --- gcc/testsuite/gcc.dg/vect/pr26359.c 2014-06-23 14:32:05.609860524 +0200 *************** foo () { *** 13,17 **** } /* { dg-final { scan-tree-dump-times "Deleting : vect_" 0 "dce5" } } */ ! /* { dg-final { cleanup-tree-dump "dce" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ --- 13,17 ---- } /* { dg-final { scan-tree-dump-times "Deleting : vect_" 0 "dce5" } } */ ! /* { dg-final { cleanup-tree-dump "dce5" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c =================================================================== *** gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c.orig 2010-11-23 10:52:09.000000000 +0100 --- gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c 2014-06-23 14:38:12.774835245 +0200 *************** int main (void) *** 41,46 **** 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" } } */ --- 41,46 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp2" { xfail vect_no_align } } } */ ! /* { dg-final { cleanup-tree-dump "slp2" } } */