summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
diff options
context:
space:
mode:
authorglisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4>2014-06-24 18:50:00 +0000
committerglisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4>2014-06-24 18:50:00 +0000
commit9f15ed6e5c148ded6e7942e75595d91151792c9b (patch)
tree81ba342aeb4db1f2fe70e25917fc6972499cd2d2 /gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
parentb507a4293e4812063de5043d5bc2f17e1a7c0de8 (diff)
downloadgcc-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.c29
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" } } */