From: Sebastian Pop <s....@samsung.com> We remove all code related to tiling, then we will call isl functionality for that.
* graphite-isl-ast-to-gimple.c (set_options_for_schedule_tree): Remove. (translate_isl_ast_to_gimple::scop_to_isl_ast): Call set_separate_option. (graphite_regenerate_ast_isl): Add dump. * graphite-optimize-isl.c (get_schedule_for_node_st): Remove. (get_schedule_map_st): Remove. (get_single_map): Remove. (apply_schedule_map_to_scop): Remove. (optimize_isl): Do not use isl_union_maps to build the schedule. * graphite-poly.c (apply_poly_transforms): Simplify. (print_isl_set): Use more readable format: ISL_YAML_STYLE_BLOCK. (print_isl_map): Same. (print_isl_union_map): Same. (print_isl_schedule): New. (debug_isl_schedule): New. * graphite.h: Declare print_isl_schedule and debug_isl_schedule. gcc/testsuite * gcc.dg/graphite/block-0.c: Adjust patern. * gcc.dg/graphite/block-1.c: Same. * gcc.dg/graphite/block-5.c: Same. * gcc.dg/graphite/block-6.c: Same. * gcc.dg/graphite/block-pr47654.c: Same. * gcc.dg/graphite/interchange-0.c: Same. * gcc.dg/graphite/interchange-1.c: Same. * gcc.dg/graphite/interchange-10.c: Same. * gcc.dg/graphite/interchange-11.c: Same. * gcc.dg/graphite/interchange-12.c: Same. * gcc.dg/graphite/interchange-13.c: Same. * gcc.dg/graphite/interchange-14.c: Same. * gcc.dg/graphite/interchange-15.c: Same. * gcc.dg/graphite/interchange-16.c: Same. * gcc.dg/graphite/interchange-2.c: Same. * gcc.dg/graphite/interchange-3.c: Same. * gcc.dg/graphite/interchange-4.c: Same. * gcc.dg/graphite/interchange-5.c: Same. * gcc.dg/graphite/interchange-6.c: Same. * gcc.dg/graphite/interchange-7.c: Same. * gcc.dg/graphite/interchange-8.c: Same. * gcc.dg/graphite/interchange-9.c: Same. * gcc.dg/graphite/interchange-mvt.c: Same. * gcc.dg/graphite/uns-block-1.c: Same. * gcc.dg/graphite/uns-interchange-12.c: Same. * gcc.dg/graphite/uns-interchange-14.c: Same. * gcc.dg/graphite/uns-interchange-15.c: Same. * gcc.dg/graphite/uns-interchange-9.c: Same. * gcc.dg/graphite/uns-interchange-mvt.c: Same. * gfortran.dg/graphite/interchange-3.f90: Same. * gfortran.dg/graphite/pr14741.f90: Same. --- gcc/graphite-isl-ast-to-gimple.c | 47 +++----- gcc/graphite-optimize-isl.c | 130 +++------------------ gcc/graphite-poly.c | 36 ++++-- gcc/graphite.h | 2 + gcc/testsuite/gcc.dg/graphite/block-0.c | 2 +- gcc/testsuite/gcc.dg/graphite/block-1.c | 2 +- gcc/testsuite/gcc.dg/graphite/block-5.c | 3 +- gcc/testsuite/gcc.dg/graphite/block-6.c | 3 +- gcc/testsuite/gcc.dg/graphite/block-pr47654.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-0.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-1.c | 7 +- gcc/testsuite/gcc.dg/graphite/interchange-10.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-11.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-12.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-13.c | 1 + gcc/testsuite/gcc.dg/graphite/interchange-14.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-15.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-16.c | 1 + gcc/testsuite/gcc.dg/graphite/interchange-2.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-3.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-4.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-5.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-6.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-7.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-8.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-9.c | 2 +- gcc/testsuite/gcc.dg/graphite/interchange-mvt.c | 2 +- gcc/testsuite/gcc.dg/graphite/uns-block-1.c | 2 +- gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c | 2 +- gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c | 2 +- gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c | 2 +- gcc/testsuite/gcc.dg/graphite/uns-interchange-9.c | 2 +- .../gcc.dg/graphite/uns-interchange-mvt.c | 2 +- .../gfortran.dg/graphite/interchange-3.f90 | 2 +- gcc/testsuite/gfortran.dg/graphite/pr14741.f90 | 2 +- 35 files changed, 97 insertions(+), 185 deletions(-) diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c index dad802f..b0da425 100644 --- a/gcc/graphite-isl-ast-to-gimple.c +++ b/gcc/graphite-isl-ast-to-gimple.c @@ -300,12 +300,6 @@ class translate_isl_ast_to_gimple __isl_give isl_union_map *generate_isl_schedule (scop_p scop); - /* Set the "separate" option for all schedules. This helps reducing control - overhead. */ - - __isl_give isl_schedule * - set_options_for_schedule_tree (__isl_take isl_schedule *schedule); - /* Set the separate option for all dimensions. This helps to reduce control overhead. */ @@ -3182,17 +3176,6 @@ ast_build_before_for (__isl_keep isl_ast_build *build, void *user) return id; } -/* Set the separate option for all schedules. This helps reducing control - overhead. */ - -__isl_give isl_schedule * -translate_isl_ast_to_gimple::set_options_for_schedule_tree -(__isl_take isl_schedule *schedule) -{ - return isl_schedule_map_schedule_node_bottom_up - (schedule, set_separate_option, NULL); -} - /* Set the separate option for all dimensions. This helps to reduce control overhead. */ @@ -3217,7 +3200,6 @@ translate_isl_ast_to_gimple::set_options (__isl_take isl_ast_build *control, __isl_give isl_ast_node * translate_isl_ast_to_gimple::scop_to_isl_ast (scop_p scop, ivs_params &ip) { - isl_ast_node *ast_isl = NULL; /* Generate loop upper bounds that consist of the current loop iterator, an operator (< or <=) and an expression not involving the iterator. If this option is not set, then the current loop iterator may appear several times @@ -3225,6 +3207,20 @@ translate_isl_ast_to_gimple::scop_to_isl_ast (scop_p scop, ivs_params &ip) isl_options_set_ast_build_atomic_upper_bound (scop->isl_context, true); add_parameters_to_ivs_params (scop, ip); + + if (scop->schedule) + { + /* Set the separate option to reduce control flow overhead. */ + isl_schedule *schedule = isl_schedule_map_schedule_node_bottom_up + (scop->schedule, set_separate_option, NULL); + isl_ast_build *context_isl = generate_isl_context (scop); + isl_ast_node *ast_isl = isl_ast_build_node_from_schedule + (context_isl, schedule); + isl_ast_build_free (context_isl); + return ast_isl; + } + + /* graphite-identity, or parallelize. */ isl_union_map *schedule_isl = generate_isl_schedule (scop); isl_ast_build *context_isl = generate_isl_context (scop); context_isl = set_options (context_isl, schedule_isl); @@ -3235,16 +3231,8 @@ translate_isl_ast_to_gimple::scop_to_isl_ast (scop_p scop, ivs_params &ip) isl_ast_build_set_before_each_for (context_isl, ast_build_before_for, dependence); } - - if (scop->schedule) - { - scop->schedule = set_options_for_schedule_tree (scop->schedule); - ast_isl = isl_ast_build_node_from_schedule (context_isl, scop->schedule); - isl_union_map_free(schedule_isl); - } - else - ast_isl = isl_ast_build_ast_from_schedule (context_isl, schedule_isl); - + isl_ast_node *ast_isl = isl_ast_build_ast_from_schedule + (context_isl, schedule_isl); isl_ast_build_free (context_isl); return ast_isl; } @@ -3314,6 +3302,9 @@ graphite_regenerate_ast_isl (scop_p scop) scev_reset (); recompute_all_dominators (); graphite_verify (); + + if (dump_file) + fprintf (dump_file, "[codegen] isl AST to Gimple succeeded.\n"); } else { diff --git a/gcc/graphite-optimize-isl.c b/gcc/graphite-optimize-isl.c index 1565219..306f91c 100644 --- a/gcc/graphite-optimize-isl.c +++ b/gcc/graphite-optimize-isl.c @@ -39,105 +39,6 @@ along with GCC; see the file COPYING3. If not see #include "dumpfile.h" #include "graphite.h" -/* get_schedule_for_node_st - Improve schedule for the schedule node. - Only Simple loop tiling is considered. */ - -static __isl_give isl_schedule_node * -get_schedule_for_node_st (__isl_take isl_schedule_node *node, void *user) -{ - if (user) - return node; - - if (isl_schedule_node_get_type (node) != isl_schedule_node_band - || isl_schedule_node_n_children (node) != 1) - return node; - - isl_space *space = isl_schedule_node_band_get_space (node); - unsigned dims = isl_space_dim (space, isl_dim_set); - isl_schedule_node *child = isl_schedule_node_get_child (node, 0); - isl_schedule_node_type type = isl_schedule_node_get_type (child); - isl_space_free (space); - isl_schedule_node_free (child); - - if (type != isl_schedule_node_leaf) - return node; - - if (dims <= 1 || !isl_schedule_node_band_get_permutable (node)) - { - if (dump_file && dump_flags) - fprintf (dump_file, "not tiled\n"); - return node; - } - - /* Tile loops. */ - space = isl_schedule_node_band_get_space (node); - isl_multi_val *sizes = isl_multi_val_zero (space); - long tile_size = PARAM_VALUE (PARAM_LOOP_BLOCK_TILE_SIZE); - isl_ctx *ctx = isl_schedule_node_get_ctx (node); - - for (unsigned i = 0; i < dims; i++) - { - sizes = isl_multi_val_set_val (sizes, i, - isl_val_int_from_si (ctx, tile_size)); - if (dump_file && dump_flags) - fprintf (dump_file, "tiled by %ld\n", tile_size); - } - - node = isl_schedule_node_band_tile (node, sizes); - node = isl_schedule_node_child (node, 0); - - return node; -} - -/* get_schedule_map_st - Improve the schedule by performing other loop - optimizations. _st ending is for schedule tree version of this - function (see get_schedule_map below for the band forest version). - - Do a depth-first post-order traversal of the nodes in a schedule - tree and apply get_schedule_for_node_st on them to improve the schedule. - */ - -static __isl_give isl_union_map * -get_schedule_map_st (__isl_keep isl_schedule *schedule) -{ - - schedule = isl_schedule_map_schedule_node_bottom_up (schedule, - get_schedule_for_node_st, - NULL); - isl_union_map *schedule_map = isl_schedule_get_map (schedule); - return schedule_map; -} - -static isl_stat -get_single_map (__isl_take isl_map *map, void *user) -{ - isl_map **single_map = (isl_map **)user; - *single_map = map; - return isl_stat_ok; -} - -static void -apply_schedule_map_to_scop (scop_p scop, isl_union_map *schedule_map) -{ - int i; - poly_bb_p pbb; - - FOR_EACH_VEC_ELT (scop->pbbs, i, pbb) - { - isl_set *domain = isl_set_copy (pbb->domain); - isl_map *stmt_schedule; - - isl_union_map *stmt_band - = isl_union_map_intersect_domain (isl_union_map_copy (schedule_map), - isl_union_set_from_set (domain)); - stmt_band = isl_union_map_coalesce (stmt_band); - isl_union_map_foreach_map (stmt_band, get_single_map, &stmt_schedule); - isl_map_free (pbb->transformed); - pbb->transformed = isl_map_coalesce (stmt_schedule); - isl_union_map_free (stmt_band); - } -} - static isl_union_set * scop_get_domains (scop_p scop) { @@ -152,8 +53,6 @@ scop_get_domains (scop_p scop) return res; } -static const int CONSTANT_BOUND = 20; - /* Compute the schedule for SCOP based on its parameters, domain and set of constraints. Then apply the schedule to SCOP. */ @@ -175,19 +74,27 @@ optimize_isl (scop_p scop) isl_union_map *validity = isl_union_map_copy (scop->dependence); isl_union_map *proximity = isl_union_map_copy (validity); - isl_options_set_schedule_max_constant_term (scop->isl_context, CONSTANT_BOUND); - isl_options_set_schedule_maximize_band_depth (scop->isl_context, 1); + isl_schedule_constraints *schedule_constraints; + schedule_constraints = isl_schedule_constraints_on_domain (domain); + schedule_constraints + = isl_schedule_constraints_set_proximity (schedule_constraints, + proximity); + schedule_constraints + = isl_schedule_constraints_set_validity (schedule_constraints, + isl_union_map_copy (validity)); + schedule_constraints + = isl_schedule_constraints_set_coincidence (schedule_constraints, + validity); + isl_options_set_schedule_serialize_sccs (scop->isl_context, 0); isl_options_set_schedule_maximize_band_depth (scop->isl_context, 1); isl_options_set_schedule_max_constant_term (scop->isl_context, 20); isl_options_set_schedule_max_coefficient (scop->isl_context, 20); isl_options_set_tile_scale_tile_loops (scop->isl_context, 0); - isl_options_set_coalesce_bounded_wrapping (scop->isl_context, 1); - isl_options_set_ast_build_exploit_nested_bounds (scop->isl_context, 1); isl_options_set_ast_build_atomic_upper_bound (scop->isl_context, 1); isl_schedule *schedule - = isl_union_set_compute_schedule (domain, validity, proximity); + = isl_schedule_constraints_compute_schedule (schedule_constraints); isl_options_set_on_error (scop->isl_context, ISL_ON_ERROR_ABORT); isl_ctx_reset_operations (scop->isl_context); @@ -202,15 +109,14 @@ optimize_isl (scop_p scop) return false; } - /* Attach the schedule to scop so that it can be used in code generation. - schedule freeing will occur in code generation. */ scop->schedule = schedule; - isl_union_map *schedule_map = get_schedule_map_st (schedule); - apply_schedule_map_to_scop (scop, schedule_map); + if (dump_file) + { + fprintf (dump_file, "isl end schedule:\n"); + print_isl_schedule (dump_file, scop->schedule); + } - isl_union_map_free (schedule_map); return true; } - #endif /* HAVE_isl */ diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c index 428c427..de7515a 100644 --- a/gcc/graphite-poly.c +++ b/gcc/graphite-poly.c @@ -91,21 +91,16 @@ debug_iteration_domains (scop_p scop) bool apply_poly_transforms (scop_p scop) { - bool transform_done = false; + if (flag_loop_nest_optimize && optimize_isl (scop)) + return true; + + if (!flag_graphite_identity && !flag_loop_parallelize_all) + return false; /* Generate code even if we did not apply any real transformation. This also allows to check the performance for the identity transformation: GIMPLE -> GRAPHITE -> GIMPLE. */ - if (flag_graphite_identity) - transform_done = true; - - if (flag_loop_parallelize_all) - transform_done = true; - - if (flag_loop_nest_optimize) - transform_done |= optimize_isl (scop); - - return transform_done; + return true; } /* Create a new polyhedral data reference and add it to PBB. It is @@ -538,6 +533,7 @@ void print_isl_set (FILE *f, isl_set *set) { isl_printer *p = isl_printer_to_file (the_isl_ctx, f); + p = isl_printer_set_yaml_style (p, ISL_YAML_STYLE_BLOCK); p = isl_printer_print_set (p, set); p = isl_printer_print_str (p, "\n"); isl_printer_free (p); @@ -553,6 +549,7 @@ void print_isl_map (FILE *f, isl_map *map) { isl_printer *p = isl_printer_to_file (the_isl_ctx, f); + p = isl_printer_set_yaml_style (p, ISL_YAML_STYLE_BLOCK); p = isl_printer_print_map (p, map); p = isl_printer_print_str (p, "\n"); isl_printer_free (p); @@ -568,6 +565,7 @@ void print_isl_union_map (FILE *f, isl_union_map *map) { isl_printer *p = isl_printer_to_file (the_isl_ctx, f); + p = isl_printer_set_yaml_style (p, ISL_YAML_STYLE_BLOCK); p = isl_printer_print_union_map (p, map); p = isl_printer_print_str (p, "\n"); isl_printer_free (p); @@ -610,6 +608,22 @@ debug_isl_constraint (isl_constraint *c) print_isl_constraint (stderr, c); } +void +print_isl_schedule (FILE *f, isl_schedule *s) +{ + isl_printer *p = isl_printer_to_file (the_isl_ctx, f); + p = isl_printer_set_yaml_style (p, ISL_YAML_STYLE_BLOCK); + p = isl_printer_print_schedule (p, s); + p = isl_printer_print_str (p, "\n"); + isl_printer_free (p); +} + +DEBUG_FUNCTION void +debug_isl_schedule (isl_schedule *s) +{ + print_isl_schedule (stderr, s); +} + /* Returns the number of iterations RES of the loop around PBB at time(scattering) dimension TIME_DEPTH. */ diff --git a/gcc/graphite.h b/gcc/graphite.h index 5a6677a..7f8a273 100644 --- a/gcc/graphite.h +++ b/gcc/graphite.h @@ -304,6 +304,8 @@ extern void print_isl_map (FILE *, isl_map *); extern void print_isl_union_map (FILE *, isl_union_map *); extern void print_isl_aff (FILE *, isl_aff *); extern void print_isl_constraint (FILE *, isl_constraint *); +extern void print_isl_schedule (FILE *, isl_schedule *); +extern void debug_isl_schedule (isl_schedule *); extern void debug_isl_set (isl_set *); extern void debug_isl_map (isl_map *); extern void debug_isl_union_map (isl_union_map *); diff --git a/gcc/testsuite/gcc.dg/graphite/block-0.c b/gcc/testsuite/gcc.dg/graphite/block-0.c index 2a9f748..0a278f8 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-0.c +++ b/gcc/testsuite/gcc.dg/graphite/block-0.c @@ -42,4 +42,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "not tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-1.c b/gcc/testsuite/gcc.dg/graphite/block-1.c index b8ac3ac..2758404 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-1.c +++ b/gcc/testsuite/gcc.dg/graphite/block-1.c @@ -45,4 +45,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-5.c b/gcc/testsuite/gcc.dg/graphite/block-5.c index 97bf410..28a0192 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-5.c +++ b/gcc/testsuite/gcc.dg/graphite/block-5.c @@ -34,6 +34,7 @@ main (void) { int i, j, res; + /* Not beneficial to be blocked. */ for (i = 0; i < N; i++) for (j = 0; j < N; j++) { @@ -53,4 +54,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-6.c b/gcc/testsuite/gcc.dg/graphite/block-6.c index a6a5ba7..8902a17 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-6.c +++ b/gcc/testsuite/gcc.dg/graphite/block-6.c @@ -32,6 +32,7 @@ main (void) { int i, j, res; + for (i = 0; i < N; i++) for (j = 0; j < N; j++) a[i][j] = i + j; @@ -48,4 +49,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-pr47654.c b/gcc/testsuite/gcc.dg/graphite/block-pr47654.c index 6d53ef4..2027a3f 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-pr47654.c +++ b/gcc/testsuite/gcc.dg/graphite/block-pr47654.c @@ -21,4 +21,4 @@ main () return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-0.c b/gcc/testsuite/gcc.dg/graphite/interchange-0.c index d56be46..f655e84 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-0.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-0.c @@ -46,4 +46,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-1.c b/gcc/testsuite/gcc.dg/graphite/interchange-1.c index b65d486..b6260dc 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-1.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-1.c @@ -49,9 +49,4 @@ main (void) return 0; } -/*FIXME: Between isl 0.12 and isl 0.15 the schedule optimizer needs to print -something canonical so that it can be checked in the test. The final code -generated by both are same in this case but the messaged printed are -not consistent. */ - -/* { dg-final { scan-tree-dump "tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-10.c b/gcc/testsuite/gcc.dg/graphite/interchange-10.c index a955644..825aafd 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-10.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-10.c @@ -46,4 +46,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-11.c b/gcc/testsuite/gcc.dg/graphite/interchange-11.c index 6102822..3173774 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-11.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-11.c @@ -46,4 +46,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-12.c b/gcc/testsuite/gcc.dg/graphite/interchange-12.c index 482bea4..7cdbabe 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-12.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-12.c @@ -53,4 +53,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-13.c b/gcc/testsuite/gcc.dg/graphite/interchange-13.c index 4e4a83e..d7f00a1 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-13.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-13.c @@ -49,3 +49,4 @@ main (void) return 0; } +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-14.c b/gcc/testsuite/gcc.dg/graphite/interchange-14.c index ca4dedc..617659c 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-14.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-14.c @@ -54,4 +54,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-15.c b/gcc/testsuite/gcc.dg/graphite/interchange-15.c index 7410f29..3696f41 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-15.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-15.c @@ -48,4 +48,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-16.c b/gcc/testsuite/gcc.dg/graphite/interchange-16.c index b4d79ae..307c757 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-16.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-16.c @@ -19,3 +19,4 @@ void spread_i1 (int *rptr, int *sptr, int ncopies, int *extent, int rdelta, int int main() { return 0; } +/* { dg-final { scan-tree-dump-times "number of SCoPs: 0" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-2.c b/gcc/testsuite/gcc.dg/graphite/interchange-2.c index 936ee00..0178861 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-2.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-2.c @@ -52,4 +52,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "number of SCoPs: 0" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-3.c b/gcc/testsuite/gcc.dg/graphite/interchange-3.c index 4aec824..e1b1117 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-3.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-3.c @@ -47,4 +47,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-4.c b/gcc/testsuite/gcc.dg/graphite/interchange-4.c index 463ecb5..28df935 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-4.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-4.c @@ -46,4 +46,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-5.c b/gcc/testsuite/gcc.dg/graphite/interchange-5.c index e5aaa64..4410a17 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-5.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-5.c @@ -46,4 +46,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-6.c b/gcc/testsuite/gcc.dg/graphite/interchange-6.c index 7257c29..c4500cb 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-6.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-6.c @@ -47,4 +47,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-7.c b/gcc/testsuite/gcc.dg/graphite/interchange-7.c index 81a6d83..2cb46a8 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-7.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-7.c @@ -46,4 +46,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-8.c b/gcc/testsuite/gcc.dg/graphite/interchange-8.c index d705910..9df7258 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-8.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-8.c @@ -82,4 +82,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-9.c b/gcc/testsuite/gcc.dg/graphite/interchange-9.c index 88a3578..728e67f 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-9.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-9.c @@ -44,4 +44,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c b/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c index c6543ec..b43131c 100644 --- a/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c +++ b/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c @@ -58,4 +58,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-block-1.c b/gcc/testsuite/gcc.dg/graphite/uns-block-1.c index 3bc7c12..5b61eea 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-block-1.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-block-1.c @@ -45,4 +45,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c index 4e3c705..a53c98e 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c @@ -54,4 +54,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c index a9d4950..1e180c6 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c @@ -55,4 +55,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c index fe2669f..adac7d4 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c @@ -49,4 +49,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-9.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-9.c index cc108c2..e4d42f2 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-9.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-9.c @@ -45,4 +45,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c b/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c index 211c9ab..04f5b7d 100644 --- a/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c +++ b/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c @@ -59,4 +59,4 @@ main (void) return 0; } -/* { dg-final { scan-tree-dump "tiled by" "graphite" } } */ +/* { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "2" "graphite" } } */ diff --git a/gcc/testsuite/gfortran.dg/graphite/interchange-3.f90 b/gcc/testsuite/gfortran.dg/graphite/interchange-3.f90 index 8070bbb..6c16a19 100644 --- a/gcc/testsuite/gfortran.dg/graphite/interchange-3.f90 +++ b/gcc/testsuite/gfortran.dg/graphite/interchange-3.f90 @@ -24,4 +24,4 @@ Program FOO end Program FOO -! { dg-final { scan-tree-dump "tiled" "graphite" } } +! { dg-final { scan-tree-dump-times "unsuccessful in translating pending phis" "1" "graphite" } } diff --git a/gcc/testsuite/gfortran.dg/graphite/pr14741.f90 b/gcc/testsuite/gfortran.dg/graphite/pr14741.f90 index e40262f..50c2e79 100644 --- a/gcc/testsuite/gfortran.dg/graphite/pr14741.f90 +++ b/gcc/testsuite/gfortran.dg/graphite/pr14741.f90 @@ -24,4 +24,4 @@ SUBROUTINE mult(A,B,C,N) ENDDO END SUBROUTINE mult -! { dg-final { scan-tree-dump "tiled by" "graphite" } } +! { dg-final { scan-tree-dump-times "isl AST to Gimple succeeded" "1" "graphite" } } -- 2.5.0