]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix memory leak in DD XFAILs some interchange testcases.
authorKonrad Trifunovic <konrad.trifunovic@gmail.com>
Wed, 12 Aug 2009 14:24:01 +0000 (14:24 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Wed, 12 Aug 2009 14:24:01 +0000 (14:24 +0000)
2009-08-05  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
    Sebastian Pop  <sebastian.pop@amd.com>

* graphite-dependences.c (graphite_legal_transform_dr): Work on a
copy of the dependence polyhedron.  Free the temporary objects.
(graphite_carried_dependence_level_k): Free unused objects before
returning.

* testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
* testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
* testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
* testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
* testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.

Co-Authored-By: Sebastian Pop <sebastian.pop@amd.com>
From-SVN: r150687

gcc/ChangeLog
gcc/ChangeLog.graphite
gcc/graphite-dependences.c
gcc/testsuite/gcc.dg/graphite/interchange-1.c
gcc/testsuite/gcc.dg/graphite/interchange-2.c
gcc/testsuite/gcc.dg/graphite/interchange-3.c
gcc/testsuite/gcc.dg/graphite/interchange-4.c
gcc/testsuite/gcc.dg/graphite/interchange-7.c

index 60a0cc8114b22d78fe6a8aec1709eb652b02018a..b7888b897e47a48c354f87c407d49388346d0e1e 100644 (file)
@@ -1,3 +1,17 @@
+2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
+           Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (graphite_legal_transform_dr): Work on a
+       copy of the dependence polyhedron.  Free the temporary objects.
+       (graphite_carried_dependence_level_k): Free unused objects before
+       returning.
+
+       * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
+       * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
+       * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
+       * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
+       * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
+
 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
index 38b22e9dc116bcf4e43a19717248239076c74ef2..bb1d3ad1b7eab64551ea00f2e027743315a799e8 100644 (file)
@@ -1,3 +1,17 @@
+2009-08-05  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
+           Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (graphite_legal_transform_dr): Work on a
+       copy of the dependence polyhedron.  Free the temporary objects.
+       (graphite_carried_dependence_level_k): Free unused objects before
+       returning.
+
+       * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
+       * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
+       * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
+       * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
+       * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
+
 2009-08-05  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
index ed2f92e2950e8cc178bacc6219a1f7b57c6324b2..1c29b18bcc667b3e91fc003670711b33ff524b30 100644 (file)
@@ -513,6 +513,17 @@ graphite_legal_transform_dr (poly_bb_p pbb1, poly_bb_p pbb2,
       graphite_dim_t otdim2 = pbb_nb_scattering_orig (pbb2);
       graphite_dim_t ttdim1 = pbb_nb_scattering_transform (pbb1);
       graphite_dim_t ttdim2 = pbb_nb_scattering_transform (pbb2);
+      ppl_Pointset_Powerset_C_Polyhedron_t temp;
+      ppl_dimension_type pdim;
+      bool is_empty_p;
+
+      /* Copy the PO polyhedron into the TEMP, so it is not destroyed.
+         Keep in mind, that PO polyhedron might be restored from the cache
+         and should not be modified!  */
+      ppl_Pointset_Powerset_C_Polyhedron_space_dimension (po, &pdim);
+      ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (&temp,
+                                                                  pdim, 0);
+      ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (temp, po);
 
       if (dump_file && (dump_flags & TDF_DETAILS))
        fprintf (dump_file, "\nloop carries dependency.\n");
@@ -520,14 +531,18 @@ graphite_legal_transform_dr (poly_bb_p pbb1, poly_bb_p pbb2,
                                  false, false);
 
       /* Extend PO and PT to have the same dimensions.  */
-      ppl_insert_dimensions_pointset (po, otdim1, ttdim1);
-      ppl_insert_dimensions_pointset (po, otdim1 + ttdim1 + ddim1 + otdim2,
+      ppl_insert_dimensions_pointset (temp, otdim1, ttdim1);
+      ppl_insert_dimensions_pointset (temp, otdim1 + ttdim1 + ddim1 + otdim2,
                                      ttdim2);
       ppl_insert_dimensions_pointset (pt, 0, otdim1);
       ppl_insert_dimensions_pointset (pt, otdim1 + ttdim1 + ddim1, otdim2);
 
-      ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (po, pt);
-      return ppl_Pointset_Powerset_C_Polyhedron_is_empty (po);
+      ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (temp, pt);
+      is_empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (temp);
+
+      ppl_delete_Pointset_Powerset_C_Polyhedron (temp);
+      ppl_delete_Pointset_Powerset_C_Polyhedron (pt);
+      return is_empty_p;
     }
 }
 
@@ -674,7 +689,6 @@ graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2,
   ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (eqpp, po);
   empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (eqpp);
 
-  ppl_delete_Pointset_Powerset_C_Polyhedron (po);
   ppl_delete_Pointset_Powerset_C_Polyhedron (eqpp);
   return !empty_p;
 }
index 011d98e2cfc892d72add0727059d21e458f998cb..3d3da117d1766fd550dbc18d8c3b438e1cac8580 100644 (file)
@@ -16,5 +16,5 @@ int foo(int N, int *res)
   *res = sum + N;
 }
 
-/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ 
+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ 
 /* { dg-final { cleanup-tree-dump "graphite" } } */
index 5a64f9a6f47669a1eb8267ae787b067421b921bf..4c9ed5ba8008b4174db68414c94f3cfe06d094f3 100644 (file)
@@ -20,5 +20,5 @@ int foo(int N, int *res)
   *res = sum + N;
 }
 
-/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ 
+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ 
 /* { dg-final { cleanup-tree-dump "graphite" } } */
index d081d9e33d554766918fba59ac1f46d84933888d..bd3dde671a21c3a1ed98d49143e394558c12dc00 100644 (file)
@@ -15,5 +15,5 @@ int foo(int N, int *res)
       *res = sum + N;
 }
 
-/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ 
+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ 
 /* { dg-final { cleanup-tree-dump "graphite" } } */
index 52fc1709dd1d3af0c65fd26a6102f21ce677a2d3..d7af311ff9b7884166791545fe7b6b1f8e3e4fa3 100644 (file)
@@ -14,5 +14,5 @@ int foo(int N, int *res)
   *res = sum + N;
 }
 
-/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ 
+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ 
 /* { dg-final { cleanup-tree-dump "graphite" } } */
index 7627830586a3f703315d7b0442c365a6aed1a03e..7128fa3207333e7fb25e6114d0c5b691dc73be7f 100644 (file)
@@ -10,5 +10,5 @@ double foo(double *a)
        return r;
 }
 
-/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ 
+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ 
 /* { dg-final { cleanup-tree-dump "graphite" } } */