diff options
author | Roman Gareev <gareevroman@gmail.com> | 2014-07-24 14:08:29 +0000 |
---|---|---|
committer | Roman Gareev <romangareev@gcc.gnu.org> | 2014-07-24 14:08:29 +0000 |
commit | a663102770082432f660f5e3e572221f5a48655d (patch) | |
tree | 48a5d78f5dc33dd2c062d14b1d20c34fc61dc00a /gcc | |
parent | dacd445e14adb14de376a623d8686f93d3697729 (diff) | |
download | gcc-a663102770082432f660f5e3e572221f5a48655d.zip gcc-a663102770082432f660f5e3e572221f5a48655d.tar.gz gcc-a663102770082432f660f5e3e572221f5a48655d.tar.bz2 |
[gcc/]
* graphite-isl-ast-to-gimple.c:
(graphite_create_new_loop): Add calling of isl_id_free to properly
decrement reference counts.
[gcc/testsuite]
* gcc.dg/graphite/isl-ast-gen-blocks-4.c: New testcase.
From-SVN: r212994
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/graphite-isl-ast-to-gimple.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-4.c | 32 |
3 files changed, 44 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cee82ab..f1a0b3c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-07-24 Roman Gareev <gareevroman@gmail.com> + + * graphite-isl-ast-to-gimple.c: + (graphite_create_new_loop): Add calling of isl_id_free to properly + decrement reference counts. + + * gcc.dg/graphite/isl-ast-gen-blocks-4.c: New testcase. + 2014-07-24 Martin Liska <mliska@suse.cz> * cgraphunit.c (compile): Correct function used. diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c index b42d331..77b5ed4 100644 --- a/gcc/graphite-isl-ast-to-gimple.c +++ b/gcc/graphite-isl-ast-to-gimple.c @@ -389,6 +389,10 @@ graphite_create_new_loop (edge entry_edge, __isl_keep isl_ast_node *node_for, isl_ast_expr *for_iterator = isl_ast_node_for_get_iterator (node_for); isl_id *id = isl_ast_expr_get_id (for_iterator); + std::map<isl_id *, tree>::iterator res; + res = ip.find (id); + if (ip.count (id)) + isl_id_free (res->first); ip[id] = iv; isl_ast_expr_free (for_iterator); return loop; diff --git a/gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-4.c b/gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-4.c new file mode 100644 index 0000000..36c0159 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/isl-ast-gen-blocks-4.c @@ -0,0 +1,32 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fgraphite-identity -fgraphite-code-generator=isl" } */ + +static int __attribute__((noinline)) +foo (int k, int n1, int n2, int n3) +{ + int j, res = 0; + for (j = 0; j < k; j++) + { + int i; + for (i = 0; i < n1; i++) + res += i; + for (i = 0; i < n2; i++) + res += i; + for (i = 0; i < n3; i++) + res += i; + } + + return res; +} + +extern void abort (); + +int +main (void) +{ + int res = foo (4, 50, 50, 50); + if (res != 14700) + abort (); + + return 0; +} |