diff options
author | glisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-24 18:50:00 +0000 |
---|---|---|
committer | glisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-24 18:50:00 +0000 |
commit | 9f15ed6e5c148ded6e7942e75595d91151792c9b (patch) | |
tree | 81ba342aeb4db1f2fe70e25917fc6972499cd2d2 /gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c | |
parent | b507a4293e4812063de5043d5bc2f17e1a7c0de8 (diff) | |
download | gcc-9f15ed6e5c148ded6e7942e75595d91151792c9b.tar.gz |
2014-06-24 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/57742
gcc/
* tree-ssa-strlen.c (get_string_length): Ignore malloc.
(handle_builtin_malloc, handle_builtin_memset): New functions.
(strlen_optimize_stmt): Call them.
* passes.def: Move strlen after loop+dom but before vrp.
gcc/testsuite/
* g++.dg/tree-ssa/calloc.C: New testcase.
* gcc.dg/tree-ssa/calloc-1.c: Likewise.
* gcc.dg/tree-ssa/calloc-2.c: Likewise.
* gcc.dg/strlenopt-9.c: Adapt.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211956 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c b/gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c new file mode 100644 index 00000000000..cfeee33f831 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ + +extern int a; +extern int *b; +int n; +void* f(long *q) +{ + int *p = __builtin_malloc (n); + ++*q; + if (p) + { + ++*q; + a = 2; + __builtin_memset (p, 0, n); + *b = 3; + } + return p; +} +void* g(void) +{ + float *p = __builtin_calloc (8, 4); + return __builtin_memset (p, 0, 24); // not 32 +} + +/* { dg-final { scan-tree-dump-times "calloc" 2 "optimized" } } */ +/* { dg-final { scan-tree-dump-not "malloc" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "memset" "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ |