]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix pbb_remove_duplicate_pdrs.
authorSebastian Pop <sebastian.pop@amd.com>
Tue, 25 Jan 2011 06:45:16 +0000 (06:45 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Tue, 25 Jan 2011 06:45:16 +0000 (06:45 +0000)
2011-01-25  Sebastian Pop  <sebastian.pop@amd.com>

* graphite-poly.c (pbb_remove_duplicate_pdrs): Make it work.

From-SVN: r169202

gcc/ChangeLog
gcc/ChangeLog.graphite
gcc/graphite-poly.c

index 8d13d2ce072b9798d678a024c59b8a7fb6505293..e9e145a949cb56b11683a57c225db804b492fd27 100644 (file)
@@ -1,3 +1,7 @@
+2011-01-25  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-poly.c (pbb_remove_duplicate_pdrs): Make it work.
+
 2011-01-25  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-interchange.c (lst_interchange_profitable_p): Takes a loop
index 2363df6869727fb7edd9899bd80cd560a924dbae..d961c0cabc7f63a1650328bcfa48288fbc77e02a 100644 (file)
@@ -1,3 +1,7 @@
+2011-01-15  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-poly.c (pbb_remove_duplicate_pdrs): Make it work.
+
 2011-01-15  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-interchange.c (lst_interchange_profitable_p): Takes a loop
index f88788b811305530c3621f9432a40dffe64c536e..bfdbc9f3af4c98d1b75ff8e9773f8edfe5cae3ed 100644 (file)
@@ -813,15 +813,16 @@ pbb_remove_duplicate_pdrs (poly_bb_p pbb)
 {
   int i, j;
   poly_dr_p pdr1, pdr2;
-  unsigned n = VEC_length (poly_dr_p, PBB_DRS (pbb));
-  VEC (poly_dr_p, heap) *collapsed = VEC_alloc (poly_dr_p, heap, n);
 
   FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (pbb), i, pdr1)
-    FOR_EACH_VEC_ELT (poly_dr_p, collapsed, j, pdr2)
-      if (!can_collapse_pdrs (pdr1, pdr2))
-       VEC_quick_push (poly_dr_p, collapsed, pdr1);
+    for (j = i + 1; VEC_iterate (poly_dr_p, PBB_DRS (pbb), j, pdr2); j++)
+      if (can_collapse_pdrs (pdr1, pdr2))
+       {
+         PDR_NB_REFS (pdr1) += PDR_NB_REFS (pdr2);
+         free_poly_dr (pdr2);
+         VEC_ordered_remove (poly_dr_p, PBB_DRS (pbb), j);
+       }
 
-  VEC_free (poly_dr_p, heap, collapsed);
   PBB_PDR_DUPLICATES_REMOVED (pbb) = true;
 }