diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 476d31ed83ad8106c9922deabf35e18842d58b7a..9083edc1a07824fb399ebae3d4bc2ac574ef5831 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-12-16 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/46966 + * graphite-sese-to-poly.c (build_scop_drs): Call free_gimple_bb for + for bbs that are removed from SCOP_BBS vector. + 2010-12-16 Eric Botcazou <ebotcazou@adacore.com> * tree-ssa-sccvn.c (vn_reference_lookup_3): Always punt if the call to diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 5036fba4195aaef94f92f80d51861a1309f01360..202f02861be32e29532b3fb88d29d09e6995f0c9 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -1971,6 +1971,7 @@ build_scop_drs (scop_p scop) for (i = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), i, pbb); i++) if (VEC_empty (data_reference_p, GBB_DATA_REFS (PBB_BLACK_BOX (pbb)))) { + free_gimple_bb (PBB_BLACK_BOX (pbb)); VEC_ordered_remove (poly_bb_p, SCOP_BBS (scop), i); i--; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 78ed8c6a589f0cf0ed4f758447cd179e243a742f..a90d1ee4240103880891311086f6decc98e5d077 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-16 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/46966 + * gcc.dg/graphite/pr46966.c: New test. + 2010-12-16 Eric Botcazou <ebotcazou@adacore.com> * gnat.dg/opt13.adb: New test. diff --git a/gcc/testsuite/gcc.dg/graphite/pr46966.c b/gcc/testsuite/gcc.dg/graphite/pr46966.c new file mode 100644 index 0000000000000000000000000000000000000000..ce2a93ca968930f5228c3056d678813ff38b78c1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr46966.c @@ -0,0 +1,13 @@ +/* PR tree-optimization/46966 */ +/* { dg-do compile } */ +/* { dg-options "-O -floop-interchange -ffast-math -fno-tree-copy-prop -fno-tree-loop-im" } */ + +int a[1000][1000]; + +void foo () +{ + int i, j; + for (i = 0; i < 1000; i++) + for (j = 0; j < 1000; j++) + a[i][j] = 0; +}