From: Sebastian Pop Date: Tue, 25 Jan 2011 06:45:16 +0000 (+0000) Subject: Fix pbb_remove_duplicate_pdrs. X-Git-Tag: releases/gcc-4.6.0~1011 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=271fb6fae1c01083fe3abb084134b9549623f204;p=thirdparty%2Fgcc.git Fix pbb_remove_duplicate_pdrs. 2011-01-25 Sebastian Pop * graphite-poly.c (pbb_remove_duplicate_pdrs): Make it work. From-SVN: r169202 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8d13d2ce072b..e9e145a949cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2011-01-25 Sebastian Pop + + * graphite-poly.c (pbb_remove_duplicate_pdrs): Make it work. + 2011-01-25 Sebastian Pop * graphite-interchange.c (lst_interchange_profitable_p): Takes a loop diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 2363df686972..d961c0cabc7f 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,7 @@ +2011-01-15 Sebastian Pop + + * graphite-poly.c (pbb_remove_duplicate_pdrs): Make it work. + 2011-01-15 Sebastian Pop * graphite-interchange.c (lst_interchange_profitable_p): Takes a loop diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c index f88788b81130..bfdbc9f3af4c 100644 --- a/gcc/graphite-poly.c +++ b/gcc/graphite-poly.c @@ -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; }