re PR tree-optimization/79715 (hand-rolled strdup with unused result not eliminated)
authorMartin Sebor <msebor@redhat.com>
Mon, 1 May 2017 16:46:49 +0000 (16:46 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Mon, 1 May 2017 16:46:49 +0000 (10:46 -0600)
gcc/testsuite/ChangeLog:
PR tree-optimization/79715
* gcc.dg/pr79715.c: New test.

From-SVN: r247440

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr79715.c [new file with mode: 0644]

index f1c61a668c5422613de8fc715f01276e90c3e9b1..e0e04f354653fc425b55d01b48036174f43188b5 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-01  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/79715
+       * gcc.dg/pr79715.c: New test.
+
 2017-05-01  Tom de Vries  <tom@codesourcery.com>
 
        PR testsuite/65941
diff --git a/gcc/testsuite/gcc.dg/pr79715.c b/gcc/testsuite/gcc.dg/pr79715.c
new file mode 100644 (file)
index 0000000..0f0f90f
--- /dev/null
@@ -0,0 +1,26 @@
+/* PR tree-optimization/79715 - hand-rolled strdup with unused result
+   not eliminated
+   { dg-do compile }
+   { dg-options "-O2 -Wall -fdump-tree-optimized" } */
+
+void f (const char *s)
+{
+  unsigned n = __builtin_strlen (s) + 1;
+  char *p = __builtin_malloc (n);
+  __builtin_memcpy (p, s, n);
+  __builtin_free (p);
+}
+
+void g (const char *s)
+{
+  unsigned n = __builtin_strlen (s) + 1;
+  char *p = __builtin_malloc (n);
+  __builtin_strcpy (p, s);
+  __builtin_free (p);
+}
+
+/* { dg-final { scan-tree-dump-not "free" "optimized" } }
+   { dg-final { scan-tree-dump-not "malloc" "optimized" } }
+   { dg-final { scan-tree-dump-not "memcpy" "optimized" } }
+   { dg-final { scan-tree-dump-not "strcpy" "optimized" } }
+   { dg-final { scan-tree-dump-not "strlen" "optimized" } } */