[gcc/]
authorRoman Gareev <gareevroman@gmail.com>
Tue, 5 Aug 2014 08:42:09 +0000 (08:42 +0000)
committerRoman Gareev <romangareev@gcc.gnu.org>
Tue, 5 Aug 2014 08:42:09 +0000 (08:42 +0000)
* graphite-isl-ast-to-gimple.c:
(set_options): New function.
(scop_to_isl_ast): Add calling of set_options.

From-SVN: r213623

gcc/ChangeLog
gcc/graphite-isl-ast-to-gimple.c

index fd8e8209b756db3fab04a5a56fecf22c3808d2b9..660e82624e1f7c13f783b738e0d8357d0efb32a5 100644 (file)
@@ -1,3 +1,9 @@
+2014-08-05  Roman Gareev  <gareevroman@gmail.com>
+
+       * graphite-isl-ast-to-gimple.c:
+       (set_options): New function.
+       (scop_to_isl_ast): Add calling of set_options.
+
 2014-08-05  Jakub Jelinek  <jakub@redhat.com>
 
        * loop-unroll.c (struct iv_to_split): Remove n_loc and loc fields.
index 8af6c7f9fd0ff8ff1aef4ce9a937707d6a802306..42393c3ea176c9f9860f6108833c2f0f9bb59b94 100644 (file)
@@ -867,6 +867,25 @@ ast_build_before_for (__isl_keep isl_ast_build *build, void *user)
   return id;
 }
 
+/* Set the separate option for all dimensions.
+   This helps to reduce control overhead.  */
+
+static __isl_give isl_ast_build *
+set_options (__isl_take isl_ast_build *control,
+            __isl_keep isl_union_map *schedule)
+{
+  isl_ctx *ctx = isl_union_map_get_ctx (schedule);
+  isl_space *range_space = isl_space_set_alloc (ctx, 0, 1);
+  range_space =
+    isl_space_set_tuple_name (range_space, isl_dim_set, "separate");
+  isl_union_set *range =
+    isl_union_set_from_set (isl_set_universe (range_space));  
+  isl_union_set *domain = isl_union_map_range (isl_union_map_copy (schedule));
+  domain = isl_union_set_universe (domain);
+  isl_union_map *options = isl_union_map_from_domain_and_range (domain, range);
+  return isl_ast_build_set_options (control, options);
+}
+
 static __isl_give isl_ast_node *
 scop_to_isl_ast (scop_p scop, ivs_params &ip)
 {
@@ -879,6 +898,7 @@ scop_to_isl_ast (scop_p scop, ivs_params &ip)
   add_parameters_to_ivs_params (scop, ip);
   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);
   isl_union_map *dependences = NULL;
   if (flag_loop_parallelize_all)
   {