| /* 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" } } */ |