Add transform_to_exit_first_loop_alt dump success message
authorTom de Vries <tom@codesourcery.com>
Fri, 24 Jul 2015 15:00:59 +0000 (15:00 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Fri, 24 Jul 2015 15:00:59 +0000 (15:00 +0000)
2015-07-24  Tom de Vries  <tom@codesourcery.com>

* tree-parloops.c (gen_parallel_loop): Add debug print for alternative
exit-first loop transform.

* gcc.dg/parloops-exit-first-loop-alt-2.c: Use debug print for
alternative exit-first loop transform.
* gcc.dg/parloops-exit-first-loop-alt-3.c: Same.
* gcc.dg/parloops-exit-first-loop-alt-4.c: Same.
* gcc.dg/parloops-exit-first-loop-alt-5.c: Same.
* gcc.dg/parloops-exit-first-loop-alt-6.c: Same.
* gcc.dg/parloops-exit-first-loop-alt-7.c: Same.
* gcc.dg/parloops-exit-first-loop-alt-pr66652.c: Same.
* gcc.dg/parloops-exit-first-loop-alt.c: Same.
* gfortran.dg/parloops-exit-first-loop-alt-2.f95: Same.
* gfortran.dg/parloops-exit-first-loop-alt.f95: Same.

From-SVN: r226164

13 files changed:
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/parloops-exit-first-loop-alt-2.c
gcc/testsuite/gcc.dg/parloops-exit-first-loop-alt-3.c
gcc/testsuite/gcc.dg/parloops-exit-first-loop-alt-4.c
gcc/testsuite/gcc.dg/parloops-exit-first-loop-alt-5.c
gcc/testsuite/gcc.dg/parloops-exit-first-loop-alt-6.c
gcc/testsuite/gcc.dg/parloops-exit-first-loop-alt-7.c
gcc/testsuite/gcc.dg/parloops-exit-first-loop-alt-pr66652.c
gcc/testsuite/gcc.dg/parloops-exit-first-loop-alt.c
gcc/testsuite/gfortran.dg/parloops-exit-first-loop-alt-2.f95
gcc/testsuite/gfortran.dg/parloops-exit-first-loop-alt.f95
gcc/tree-parloops.c

index 87375082ca0d5d5076b7fe484d28337d4664e5e4..59910bf992ff86fd5903e4188094f01e3609825a 100644 (file)
@@ -1,3 +1,8 @@
+2015-07-24  Tom de Vries  <tom@codesourcery.com>
+
+       * tree-parloops.c (gen_parallel_loop): Add debug print for alternative
+       exit-first loop transform.
+
 2015-07-24  Cesar Philippidis  <cesar@codesourcery.com>
 
        PR 66714
index 244bf587ae786c53e8bf6fbf277097a7bd5e2d4b..9db26430e0763300f687d39f5e3cf986a34fb04a 100644 (file)
@@ -1,3 +1,17 @@
+2015-07-24  Tom de Vries  <tom@codesourcery.com>
+
+       * gcc.dg/parloops-exit-first-loop-alt-2.c: Use debug print for
+       alternative exit-first loop transform.
+       * gcc.dg/parloops-exit-first-loop-alt-3.c: Same.
+       * gcc.dg/parloops-exit-first-loop-alt-4.c: Same.
+       * gcc.dg/parloops-exit-first-loop-alt-5.c: Same.
+       * gcc.dg/parloops-exit-first-loop-alt-6.c: Same.
+       * gcc.dg/parloops-exit-first-loop-alt-7.c: Same.
+       * gcc.dg/parloops-exit-first-loop-alt-pr66652.c: Same.
+       * gcc.dg/parloops-exit-first-loop-alt.c: Same.
+       * gfortran.dg/parloops-exit-first-loop-alt-2.f95: Same.
+       * gfortran.dg/parloops-exit-first-loop-alt.f95: Same.
+
 2015-07-24  Ilya Enkovich  <enkovich.gnu@gmail.com>
 
        PR ipa/66566
index 24e605a58774459308de48cd9cba75fac4a97592..f1cf75f1f5fd2ab4055f3d0c59274b7d2ff54a9b 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target pthread } */
-/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops" } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops-details" } */
 
 /* Constant bound, vector addition.  */
 
@@ -19,9 +19,4 @@ f (void)
       c[i] = a[i] + b[i];
 }
 
-/* Three times three array accesses:
-   - three in f._loopfn.0
-   - three in the parallel
-   - three in the low iteration count loop
-   Crucially, none for a peeled off last iteration following the parallel.  */
-/* { dg-final { scan-tree-dump-times "(?n)\\\[i" 9 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } } */
index fec53a19628acdf08fef7b8b2b152249292740eb..c7154ba09adbd1dbeae67b86c3c98b3829a55219 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target pthread } */
-/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops" } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops-details" } */
 
 /* Variable bound, reduction.  */
 
@@ -18,9 +18,4 @@ f (unsigned int n, unsigned int *__restrict__ a)
   return sum;
 }
 
-/* Three array accesses:
-   - one in f._loopfn.0
-   - one in the parallel
-   - one in the low iteration count loop
-   Crucially, none for a peeled off last iteration following the parallel.  */
-/* { dg-final { scan-tree-dump-times "(?n)\\\* 4" 3 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } } */
index 2b8d289882487f64553eb84338d59362cc542ef4..5f7fe684133ce832f19cd7b4e9c8b551eb2d3cf9 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target pthread } */
-/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops" } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops-details" } */
 
 /* Constant bound, reduction.  */
 
@@ -20,9 +20,4 @@ f (void)
   return sum;
 }
 
-/* Three array accesses:
-   - one in f._loopfn.0
-   - one in the parallel
-   - one in the low iteration count loop
-   Crucially, none for a peeled off last iteration following the parallel.  */
-/* { dg-final { scan-tree-dump-times "(?n)\\\* 4" 3 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } } */
index 3f799cf234d061bdba1fefd83b32de60d88c56e9..3c1e99b58acda8981a074b87b0ede04f8e6b3f36 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target pthread } */
-/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops" } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops-details" } */
 
 /* Variable bound, vector addition, unsigned loop counter, unsigned bound.  */
 
@@ -14,9 +14,4 @@ f (unsigned int n, unsigned int *__restrict__ a, unsigned int *__restrict__ b,
     c[i] = a[i] + b[i];
 }
 
-/* Three times a store:
-   - one in f._loopfn.0
-   - one in the parallel
-   - one in the low iteration count loop
-   Crucially, none for a peeled off last iteration following the parallel.  */
-/* { dg-final { scan-tree-dump-times "(?n)^  \\*_\[0-9\]*" 3 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } } */
index ee19a55849a97b952aeacee1f4395a0257b2886b..edc60ba5253d82ad71b49b6cdc2c61381cfb3265 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target pthread } */
-/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops" } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops-details" } */
 
 /* Variable bound, vector addition, unsigned loop counter, signed bound.  */
 
@@ -14,9 +14,4 @@ f (int n, unsigned int *__restrict__ a, unsigned int *__restrict__ b,
     c[i] = a[i] + b[i];
 }
 
-/* Three times a store:
-   - one in f._loopfn.0
-   - one in the parallel
-   - one in the low iteration count loop
-   Crucially, none for a peeled off last iteration following the parallel.  */
-/* { dg-final { scan-tree-dump-times "(?n)^  \\*_\[0-9\]*" 3 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } } */
index c3373425281dbe79e4f3eb4b6bb3f3c6e859401f..38be2e8fee508647bd10c7f530a52d590608586a 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target pthread } */
-/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops" } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops-details" } */
 
 /* Variable bound, vector addition, signed loop counter, signed bound.  */
 
@@ -14,9 +14,4 @@ f (int n, unsigned int *__restrict__ a, unsigned int *__restrict__ b,
     c[i] = a[i] + b[i];
 }
 
-/* Three times a store:
-   - one in f._loopfn.0
-   - one in the parallel
-   - one in the low iteration count loop
-   Crucially, none for a peeled off last iteration following the parallel.  */
-/* { dg-final { scan-tree-dump-times "(?n)^  \\*_\[0-9\]*" 3 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } } */
index 2ea097d06f9b59a6eba9d8dd673780029a298a72..6f3ece59d2e4b69016b17324270817cdcdbbaae4 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target pthread } */
-/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops" } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops-details" } */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -22,10 +22,5 @@ f (unsigned int n, unsigned int sum)
   return sum;
 }
 
-/* Four times % 13:
-   - once in f._loopfn.0
-   - once in the parallel
-   - once in the low iteration count loop
-   - once for a peeled off last iteration following the parallel.
-   In other words, we want try_transform_to_exit_first_loop_alt to fail.  */
-/* { dg-final { scan-tree-dump-times "(?n)% 13" 4 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "parallelizing inner loop" 1 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 0 "parloops" } } */
index 0b6916507f41dbf202c84165a5539bf26653f72f..44596e3858a2bfd52196f4035a532fe7ac259720 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target pthread } */
-/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops" } */
+/* { dg-options "-O2 -ftree-parallelize-loops=2 -fdump-tree-parloops-details" } */
 
 /* Variable bound, vector addition, signed loop counter, unsigned bound.  */
 
@@ -14,9 +14,5 @@ f (unsigned int n, unsigned int *__restrict__ a, unsigned int *__restrict__ b,
     c[i] = a[i] + b[i];
 }
 
-/* Three times a store:
-   - one in f._loopfn.0
-   - one in the parallel
-   - one in the low iteration count loop
-   Crucially, none for a peeled off last iteration following the parallel.  */
-/* { dg-final { scan-tree-dump-times "(?n)^  \\*_\[0-9\]*" 3 "parloops" } } */
+/* { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } } */
+
index f26a6e375adeba7f6960bc5015cbe58b71c41a2b..52434f2a9e35ddc9d0fd6c4e71e40584066ba44b 100644 (file)
@@ -1,7 +1,7 @@
 ! { dg-additional-options "-O2" }
 ! { dg-require-effective-target pthread }
 ! { dg-additional-options "-ftree-parallelize-loops=2" }
-! { dg-additional-options "-fdump-tree-parloops" }
+! { dg-additional-options "-fdump-tree-parloops-details" }
 
 ! Constant bound, vector addition.
 
@@ -16,9 +16,4 @@ subroutine foo ()
   end do
 end subroutine foo
 
-! Three times plus 25:
-! - once in f._loopfn.0
-! - once in the parallel
-! - once in the low iteration count loop
-! Crucially, none for a peeled off last iteration following the parallel.
-! { dg-final { scan-tree-dump-times "(?n) \\+ 25;" 3 "parloops" } }
+! { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } }
index 6dc8a38c1ef38f3e4f58cabc4e14b66e67e78a9b..1eb9dfd801e0fcfb402f055158dd090ab49d9ab5 100644 (file)
@@ -1,7 +1,7 @@
 ! { dg-additional-options "-O2" }
 ! { dg-require-effective-target pthread }
 ! { dg-additional-options "-ftree-parallelize-loops=2" }
-! { dg-additional-options "-fdump-tree-parloops" }
+! { dg-additional-options "-fdump-tree-parloops-details" }
 
 ! Variable bound, vector addition.
 
@@ -17,9 +17,5 @@ subroutine foo (nr)
   end do
 end subroutine foo
 
-! Three times plus 25:
-! - once in f._loopfn.0
-! - once in the parallel
-! - once in the low iteration count loop
-! Crucially, none for a peeled off last iteration following the parallel.
-! { dg-final { scan-tree-dump-times "(?n) \\+ 25;" 3 "parloops" } }
+! { dg-final { scan-tree-dump-times "alternative exit-first loop transform succeeded" 1 "parloops" } }
+
index 88f22e85d44a3ed5352503c06c0c05e8d48d1438..6e75cb13648117ad44b1b43801c6421069f0bd90 100644 (file)
@@ -2246,7 +2246,15 @@ gen_parallel_loop (struct loop *loop,
      increment) and immediately follows the loop exit test.  Attempt to move the
      entry of the loop directly before the exit check and increase the number of
      iterations of the loop by one.  */
-  if (!try_transform_to_exit_first_loop_alt (loop, reduction_list, nit))
+  if (try_transform_to_exit_first_loop_alt (loop, reduction_list, nit))
+    {
+      if (dump_file
+         && (dump_flags & TDF_DETAILS))
+       fprintf (dump_file,
+                "alternative exit-first loop transform succeeded"
+                " for loop %d\n", loop->num);
+    }
+  else
     {
       /* Fall back on the method that handles more cases, but duplicates the
         loop body: move the exit condition of LOOP to the beginning of its