1 /* PR tree-optimization/79715 - hand-rolled strdup with unused result 2 not eliminated 3 { dg-do compile } 4 { dg-options "-O2 -Wall -fdump-tree-optimized" } */ 5 f(const char * s)6void f (const char *s) 7 { 8 unsigned n = __builtin_strlen (s) + 1; 9 char *p = __builtin_malloc (n); 10 __builtin_memcpy (p, s, n); 11 __builtin_free (p); 12 } 13 g(const char * s)14void g (const char *s) 15 { 16 unsigned n = __builtin_strlen (s) + 1; 17 char *p = __builtin_malloc (n); 18 __builtin_strcpy (p, s); 19 __builtin_free (p); 20 } 21 22 /* { dg-final { scan-tree-dump-not "free" "optimized" } } 23 { dg-final { scan-tree-dump-not "malloc" "optimized" } } 24 { dg-final { scan-tree-dump-not "memcpy" "optimized" } } 25 { dg-final { scan-tree-dump-not "strcpy" "optimized" } } 26 { dg-final { scan-tree-dump-not "strlen" "optimized" } } */ 27