graphite-isl-ast-to-gimple.c (set_codegen_error): With -fchecking and --param graphit...
authorRichard Biener <rguenther@suse.de>
Mon, 2 Oct 2017 10:04:00 +0000 (10:04 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 2 Oct 2017 10:04:00 +0000 (10:04 +0000)
2017-10-02  Richard Biener  <rguenther@suse.de>

* graphite-isl-ast-to-gimple.c (set_codegen_error): With
-fchecking and --param graphite-allow-codegen-errors=0 ICE.
* params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param.

* gcc.dg/graphite/graphite.exp: Add -fdump-tree-graphite-details.
* gcc.dg/graphite/id-15.c: Adjust for existing codegen errors.
* gcc.dg/graphite/id-16.c: Likewise.
* gcc.dg/graphite/pr46168.c: Likewise.
* gcc.dg/graphite/pr68756.c: Likewise.
* gcc.dg/graphite/pr69728.c: Likewise.
* gcc.dg/graphite/pr71575-2.c: Likewise.
* gcc.dg/graphite/pr77362.c: Likewise.
* gcc.dg/graphite/pr81373.c: Likewise.
* gcc.dg/graphite/run-id-pr67700-1.c: Likewise.
* gfortran.dg/graphite/interchange-1.f: Likewise.
* gfortran.dg/graphite/pr29581.f90: Likewise.
* gfortran.dg/graphite/pr42334-1.f: Likewise.
* gfortran.dg/graphite/pr42393-1.f90: Likewise.
* gfortran.dg/graphite/pr42393.f90: Likewise.
* gfortran.dg/graphite/pr47019.f: Likewise.

From-SVN: r253342

20 files changed:
gcc/ChangeLog
gcc/graphite-isl-ast-to-gimple.c
gcc/params.def
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/graphite/graphite.exp
gcc/testsuite/gcc.dg/graphite/id-15.c
gcc/testsuite/gcc.dg/graphite/id-16.c
gcc/testsuite/gcc.dg/graphite/pr46168.c
gcc/testsuite/gcc.dg/graphite/pr68756.c
gcc/testsuite/gcc.dg/graphite/pr69728.c
gcc/testsuite/gcc.dg/graphite/pr71575-2.c
gcc/testsuite/gcc.dg/graphite/pr77362.c
gcc/testsuite/gcc.dg/graphite/pr81373.c
gcc/testsuite/gcc.dg/graphite/run-id-pr67700-1.c
gcc/testsuite/gfortran.dg/graphite/interchange-1.f
gcc/testsuite/gfortran.dg/graphite/pr29581.f90
gcc/testsuite/gfortran.dg/graphite/pr42334-1.f
gcc/testsuite/gfortran.dg/graphite/pr42393-1.f90
gcc/testsuite/gfortran.dg/graphite/pr42393.f90
gcc/testsuite/gfortran.dg/graphite/pr47019.f

index 822afa0c88dc1091290ec3b08a6cd8e22b66374e..a2e33e4b91027ebac93766c56fe82287c2c56b5a 100644 (file)
@@ -1,3 +1,9 @@
+2017-10-02  Richard Biener  <rguenther@suse.de>
+
+       * graphite-isl-ast-to-gimple.c (set_codegen_error): With
+       -fchecking and --param graphite-allow-codegen-errors=0 ICE.
+       * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param.
+
 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
 
        * tree.h (wi::int_traits <const_tree>::decompose): Assert that the
index fb91ba15eac1941017f370588c567079abca5191..3022f0005dca5396cd4a320e379e9f684678237e 100644 (file)
@@ -240,7 +240,14 @@ class translate_isl_ast_to_gimple
   void gsi_insert_earliest (gimple_seq seq);
   tree rename_all_uses (tree new_expr, basic_block new_bb, basic_block old_bb);
   bool codegen_error_p () const { return codegen_error; }
-  void set_codegen_error () { codegen_error = true; }
+
+  void set_codegen_error ()
+  {
+    codegen_error = true;
+    gcc_assert (! flag_checking
+               || PARAM_VALUE (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS));
+  }
+
   bool is_constant (tree op) const
   {
     return TREE_CODE (op) == INTEGER_CST
index 136f9270366c796108565a3d40f2df842a0fe589..e55afc28053039b258d83fa369c38b5b9977fec6 100644 (file)
@@ -894,6 +894,12 @@ DEFPARAM (PARAM_MAX_ISL_OPERATIONS,
          "maximum number of isl operations, 0 means unlimited",
          350000, 0, 0)
 
+/* For testsuite purposes allow to check for codegen error handling.  */
+DEFPARAM (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS,
+         "graphite-allow-codegen-errors",
+         "whether codegen errors should be ICEs when -fchecking.",
+         0, 0, 1)
+
 /* Avoid data dependence analysis on very large loops.  */
 DEFPARAM (PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS,
          "loop-max-datarefs-for-datadeps",
index 1edc61ee2f46cb7c31fb5c3288ad670cd055c3ac..0214693486f80001800be38a312962660c70736f 100644 (file)
@@ -1,3 +1,22 @@
+2017-10-02  Richard Biener  <rguenther@suse.de>
+
+       * gcc.dg/graphite/graphite.exp: Add -fdump-tree-graphite-details.
+       * gcc.dg/graphite/id-15.c: Adjust for existing codegen errors.
+       * gcc.dg/graphite/id-16.c: Likewise.
+       * gcc.dg/graphite/pr46168.c: Likewise.
+       * gcc.dg/graphite/pr68756.c: Likewise.
+       * gcc.dg/graphite/pr69728.c: Likewise.
+       * gcc.dg/graphite/pr71575-2.c: Likewise.
+       * gcc.dg/graphite/pr77362.c: Likewise.
+       * gcc.dg/graphite/pr81373.c: Likewise.
+       * gcc.dg/graphite/run-id-pr67700-1.c: Likewise.
+       * gfortran.dg/graphite/interchange-1.f: Likewise.
+       * gfortran.dg/graphite/pr29581.f90: Likewise.
+       * gfortran.dg/graphite/pr42334-1.f: Likewise.
+       * gfortran.dg/graphite/pr42393-1.f90: Likewise.
+       * gfortran.dg/graphite/pr42393.f90: Likewise.
+       * gfortran.dg/graphite/pr47019.f: Likewise.
+
 2017-10-02  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/69977
index 50aae309ffdc1573da2dabdc5a4bbf57d755a870..646d192ee7fadfa69ec4ec51798699ed879c542a 100644 (file)
@@ -57,11 +57,11 @@ set vect_files        [lsort [glob -nocomplain $srcdir/$subdir/vect-*.c ] ]
 # Tests to be compiled.
 set dg-do-what-default compile
 dg-runtest $scop_files        "" "-O2 -fgraphite -fdump-tree-graphite-all"
-dg-runtest $id_files          "" "-O2 -fgraphite-identity -ffast-math"
+dg-runtest $id_files          "" "-O2 -fgraphite-identity -ffast-math -fdump-tree-graphite-details"
 
 # Tests to be run.
 set dg-do-what-default run
-dg-runtest $run_id_files      "" "-O2 -fgraphite-identity"
+dg-runtest $run_id_files      "" "-O2 -fgraphite-identity -fdump-tree-graphite-details"
 dg-runtest $opt_files         "" "-O2 -ffast-math -floop-nest-optimize -fdump-tree-graphite-all"
 
 # Vectorizer tests, to be run or compiled, depending on target capabilities.
index b57c209698e4e36fa02974284f0c26ab45343424..ac5c6495dc70040579aeaec574d6e87a8476b5e3 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target int32plus } */
+/* { dg-additional-options "--param graphite-allow-codegen-errors=1" { target ilp32 } } */
 
 typedef long unsigned int size_t;
 extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
@@ -118,3 +119,4 @@ mul_double (l1, h1, l2, h2, lv, hv)
   return (*hv < 0 ? ~(toplow & tophigh) : toplow | tophigh) != 0;
 }
 
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" { target ilp32 } } } */
index faa685f8014b64b992458c3c7cd678466de26648..bc1c29fd1e464a2364f032931bcb077335975b96 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "--param graphite-allow-codegen-errors=1" } */
+
 int transformation[(2*19 - 1) * (2*19 - 1)][8];
 
 const int transformation2[8][2][2] = {
@@ -42,3 +44,5 @@ transformation_init (void)
        }
     }
 }
+
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } } */
index 28b48415d972f6a14ce48b9b99c91aa628759b73..97a8adf6ece71d9b1c0853e6b9b67a6cc7e11288 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -ftree-loop-linear" } */
+/* { dg-options "-O -ftree-loop-linear -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" } */
 
 int
 foo (int a[4096], int mi, int mj)
@@ -13,3 +13,5 @@ foo (int a[4096], int mi, int mj)
     }
   return i16;
 }
+
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } } */
index ddb9789f133a86bd7c22694ac1fc1170520f8b68..3307d747f9fcb32359117053db6e68fa39527780 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -floop-nest-optimize" } */
+/* { dg-options "-O1 -floop-nest-optimize -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" } */
 
 unsigned int z4, pz;
 int nn[2];
@@ -24,3 +24,5 @@ la (void)
       pz = xq (hn);
     }
 }
+
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } } */
index 35ea5bd15bb7eccd68ce1db398b0f1a9fc899966..771d19d98bebfc3f15649e25f31538974621168d 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O3 -floop-nest-optimize" } */
+/* { dg-options "-O3 -floop-nest-optimize -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" } */
 
 int a[1];
 int b, c, d, e;
@@ -19,3 +19,5 @@ fn1 ()
        }
     }
 }
+
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } } */
index 24bc957b2d6d45091e5c88c22bb7d066c515c369..59c78c2c5fc39d744fe89beff93311aba1fa7bcf 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-Ofast -floop-nest-optimize" } */
+/* { dg-options "-Ofast -floop-nest-optimize -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" } */
 
 int *a;
 int b, c, d, e, g;
@@ -14,3 +14,5 @@ void fn1() {
        }
     }
 }
+
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } } */
index 61b7a7dea411c810cfa324e38cab17eeb41f45f5..06681fd3a37fdd14bafffab2d48536f345804100 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -floop-nest-optimize" } */
+/* { dg-options "-O2 -floop-nest-optimize -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" } */
 
 int mc[2];
 int f2, sk;
@@ -19,3 +19,4 @@ zm (void)
     }
 }
 
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } } */
index 588b9d007326f37463512dc1e11234d213660909..4427c472d56b8eb9f75802cef6c4c6c1f164393e 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-options "-fno-tree-scev-cprop -fgraphite-identity -O -fdump-tree-graphite-all" } */
+/* { dg-options "-fno-tree-scev-cprop -fgraphite-identity -O -fdump-tree-graphite-all --param graphite-allow-codegen-errors=1" } */
 
 void bar (void);
 
@@ -38,3 +38,4 @@ int toto()
 }
 
 /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } } */
index e0db2561e7dd645908bd14bd416c29c101414cf9..da54cf964ae3a55c86e0f593e3aed6e22b74a09c 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "--param graphite-allow-codegen-errors=1" } */
+
 #include <stdlib.h>
 #include <assert.h>
 
@@ -46,3 +48,4 @@ int main()
   return 0;
 }
 
+/* { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } } */
index d19cf70c1661d9a1189aa2f40d381acd8729eb70..466284e1fbd3f545950a9a98f051c593c2e518dc 100644 (file)
@@ -1,3 +1,4 @@
+! { dg-additional-options "--param graphite-allow-codegen-errors=1" }
       subroutine foo(f1,f2,f3,f4,f5,f6,f7,f8,f9,f0,g1,g2,g3)
       implicit none
       integer f4,f3,f2,f1
@@ -42,3 +43,4 @@
 ! kernel from bwaves.
 
 ! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } }
+! { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } }
index 3e4a39efb63243963287536fb487180289012105..223baf8da6f1d3da004a56cf98f33dbd46bd0954 100644 (file)
@@ -1,6 +1,6 @@
 ! PR tree-optimization/29581
 ! { dg-do run }
-! { dg-options "-O2 -ftree-loop-linear" }
+! { dg-options "-O2 -ftree-loop-linear -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" }
 
       SUBROUTINE FOO (K)
       INTEGER I, J, K, A(5,5), B
@@ -25,3 +25,5 @@
         A(1,1) = 0
         IF (ANY(A.NE.0)) CALL ABORT
       END
+
+! { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } }
index 2503dc3e8f2ec1a116a847353a81748718c47c09..fd6f71d506633463fb15f318571e5fb0993c0ac9 100644 (file)
@@ -1,4 +1,4 @@
-! { dg-options "-O2 -floop-interchange" }
+! { dg-options "-O2 -floop-interchange -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" }
 
       subroutine linel(icmdl,stre,anisox)
       real*8 stre(6),tkl(3,3),ekl(3,3),anisox(3,3,3,3)
@@ -14,3 +14,5 @@
             enddo
             stre(1)=tkl(1,1)
       end
+
+! { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } }
index fb62e20f45c8d4e7e92f3c4bf6ef10d503d06a65..84c9c57b24eb64b8c54b96aff7f6cc1edb5d895f 100644 (file)
@@ -1,4 +1,4 @@
-! { dg-options "-O2 -fgraphite-identity -fno-loop-block -fno-loop-interchange -fno-loop-strip-mine" }
+! { dg-options "-O2 -fgraphite-identity -fno-loop-block -fno-loop-interchange -fno-loop-strip-mine --param graphite-allow-codegen-errors=1" }
 
 MODULE beta_gamma_psi
   INTEGER, PARAMETER :: dp=KIND(0.0D0)
@@ -22,3 +22,5 @@ CONTAINS
     fn_val = sum
   END FUNCTION basym
 END MODULE beta_gamma_psi
+
+! { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } }
index 1fc708ef9673c5d1bd97ced5737227eeb82e54b7..f0255ca0ed294789727ec81ae4141a55a154def7 100644 (file)
@@ -1,4 +1,4 @@
-! { dg-options "-O2 -fgraphite-identity -fno-loop-block -fno-loop-interchange -fno-loop-strip-mine" }
+! { dg-options "-O2 -fgraphite-identity -fno-loop-block -fno-loop-interchange -fno-loop-strip-mine -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" }
 
 MODULE beta_gamma_psi
   INTEGER, PARAMETER :: dp=KIND(0.0D0)
@@ -28,3 +28,5 @@ CONTAINS
     fn_val = e0*t*u*sum
   END FUNCTION basym
 END MODULE beta_gamma_psi
+
+! { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } }
index 69067e9c500e86cc563845d921f6ed5763e590f6..8f0c80ceb19d8b49fe0a2184c70fb59fddce7988 100644 (file)
@@ -1,4 +1,4 @@
-! { dg-options "-O -ftree-pre -fgraphite-identity -fno-tree-copy-prop" }
+! { dg-options "-O -ftree-pre -fgraphite-identity -fno-tree-copy-prop -fdump-tree-graphite-details --param graphite-allow-codegen-errors=1" }
 
       subroutine foo (ldmx,ldmy,v)
       integer :: ldmx, ldmy, v, l, m
@@ -10,3 +10,5 @@
         v(m,3,2) = m
       end do
       end
+
+! { dg-final { scan-tree-dump-times "code generation error" 1 "graphite" } }