libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / ssa-dse-37.c
blob56251fc340f9df28c0fad94e6e177d77d5dfdc81
1 /* { dg-options "-O2 -fdump-tree-dse-details -fno-tree-fre" } */
4 #ifndef SCOPE
5 #define SCOPE
6 #endif
8 extern void frob (char *);
10 void g (char *s)
12 SCOPE char a[8];
13 __builtin_strncpy (a, s, sizeof a);
14 __builtin_memset (a, 0, sizeof a);
15 frob (a);
18 void h (char *s)
20 SCOPE char a[8];
21 __builtin_memset (a, 0, sizeof a);
22 __builtin_strncpy (a, s, sizeof a);
23 frob (a);
26 void i (char *s)
28 SCOPE char a[8];
29 __builtin_strncpy (a, s, sizeof a);
30 __builtin_memset (a, 0, sizeof a - 5);
31 frob (a);
34 void j (char *s)
36 SCOPE char a[8];
37 __builtin_memset (a, 0, sizeof a);
38 __builtin_strncpy (a, s, sizeof a - 5);
39 frob (a);
42 void l (char *s)
44 SCOPE char a[8];
45 __builtin_strncpy (a, s, sizeof a);
46 __builtin_memset (a + 2, 0, sizeof a - 2);
47 frob (a);
50 void m (char *s)
52 SCOPE char a[8];
53 __builtin_memset (a, 0, sizeof a);
54 __builtin_strncpy (a + 2, s, sizeof a - 2);
55 frob (a);
58 /* { dg-final { scan-tree-dump-times "Deleted dead call" 2 "dse1" } } */
59 /* { dg-final { scan-tree-dump-times "Trimming statement " 4 "dse1" } } */