re PR tree-optimization/69728 (internal compiler error: in outer_projection_mupa...
authorRichard Biener <rguenther@suse.de>
Thu, 12 Oct 2017 14:09:21 +0000 (14:09 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 12 Oct 2017 14:09:21 +0000 (14:09 +0000)
2017-10-12  Richard Biener  <rguenther@suse.de>

PR tree-optimization/69728
Revert
2017-09-19  Richard Biener  <rguenther@suse.de>

PR tree-optimization/69728
* graphite-sese-to-poly.c (schedule_error): New global.
(add_loop_schedule): Handle empty domain by failing the
schedule.
(build_original_schedule): Handle schedule_error.

* graphite-sese-to-poly.c (add_loop_schedule): Handle empty
domain by returning an unchanged schedule.

* gcc.dg/graphite/pr69728.c: Adjust to reflect we can handle
the loop now.  Remove unrelated undefined behavior.

From-SVN: r253677

gcc/ChangeLog
gcc/graphite-sese-to-poly.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/graphite/pr69728.c

index a7468efa7486c5f002d7b2ccbe11f09de508b288..cba344bc301d05865151ea5f70f1876ce070fa06 100644 (file)
@@ -1,3 +1,18 @@
+2017-10-12  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/69728
+       Revert
+       2017-09-19  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/69728
+       * graphite-sese-to-poly.c (schedule_error): New global.
+       (add_loop_schedule): Handle empty domain by failing the
+       schedule.
+       (build_original_schedule): Handle schedule_error.
+
+       * graphite-sese-to-poly.c (add_loop_schedule): Handle empty
+       domain by returning an unchanged schedule.
+
 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
 
        * genrecog.c (validate_pattern): For VEC_SELECT verify that
index 0e6824bbd454c09fe7664da9fbb811997752b93c..50b6fe8dbb29c570931e82ef8268448e54b088df 100644 (file)
@@ -1066,8 +1066,6 @@ outer_projection_mupa (__isl_take isl_union_set *set, int n)
   return isl_multi_union_pw_aff_from_union_pw_multi_aff (data.res);
 }
 
-static bool schedule_error;
-
 /* Embed SCHEDULE in the constraints of the LOOP domain.  */
 
 static isl_schedule *
@@ -1082,11 +1080,9 @@ add_loop_schedule (__isl_take isl_schedule *schedule, loop_p loop,
     return empty < 0 ? isl_schedule_free (schedule) : schedule;
 
   isl_union_set *domain = isl_schedule_get_domain (schedule);
-  /* We cannot apply an empty domain to pbbs in this loop so fail.
-     ??? Somehow drop pbbs in the loop instead.  */
+  /* We cannot apply an empty domain to pbbs in this loop so return early.  */
   if (isl_union_set_is_empty (domain))
     {
-      schedule_error = true;
       isl_union_set_free (domain);
       return schedule;
     }
@@ -1216,8 +1212,6 @@ build_schedule_loop_nest (scop_p scop, int *index, loop_p context_loop)
 static bool
 build_original_schedule (scop_p scop)
 {
-  schedule_error = false;
-
   int i = 0;
   int n = scop->pbbs.length ();
   while (i < n)
@@ -1232,14 +1226,6 @@ build_original_schedule (scop_p scop)
       scop->original_schedule = add_in_sequence (scop->original_schedule, s);
     }
 
-  if (schedule_error)
-    {
-      if (dump_file)
-       fprintf (dump_file, "[sese-to-poly] failed to build "
-                "original schedule\n");
-      return false;
-    }
-
   if (dump_file)
     {
       fprintf (dump_file, "[sese-to-poly] original schedule:\n");
index eaf1ce595319e8cf9b183fe6ed44533f205787db..29095e75a51988b555f53a62b74ce28f5b952ac5 100644 (file)
@@ -1,3 +1,9 @@
+2017-10-12  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/69728
+       * gcc.dg/graphite/pr69728.c: Adjust to reflect we can handle
+       the loop now.  Remove unrelated undefined behavior.
+
 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/82159
index 35ea5bd15bb7eccd68ce1db398b0f1a9fc899966..e8cd7bec0a1045e908e6605d8f2046907213fdcc 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
-/* { dg-options "-O3 -floop-nest-optimize" } */
+/* { dg-options "-O3 -floop-nest-optimize -fdump-tree-graphite-details" } */
 
-int a[1];
+int a[9];
 int b, c, d, e;
 void
 fn1 ()
@@ -19,3 +19,9 @@ fn1 ()
        }
     }
 }
+
+/* At the moment only ISL figures that if (d) is always true.  We've
+   run into scheduling issues before here, not being able to handle
+   empty domains.  */
+
+/* { dg-final { scan-tree-dump "loop nest optimized" "graphite" } }  */