1 /* PR tree-optimization/80933 - redundant bzero/bcopy calls not eliminated
2    { dg-do compile }
3    { dg-options "-O2 -fdump-tree-dse1" } */
4 
5 void sink (void*);
6 
test_bcopy(const void * s)7 void test_bcopy (const void *s)
8 {
9   char d[33];
10 
11   /* Bcopy is transformed into memmove and those calls are expanded
12      inline in EVRP, before DSE runs, so this test doesn't actually
13      verify that DSE does its job.  */
14   __builtin_bcopy (s, d, sizeof d);
15   __builtin_bcopy (s, d, sizeof d);
16 
17   sink (d);
18 }
19 
test_bzero(void)20 void test_bzero (void)
21 {
22   char d[33];
23 
24   __builtin_bzero (d, sizeof d);
25   __builtin_bzero (d, sizeof d);
26 
27   sink (d);
28 }
29 
30 /* { dg-final { scan-tree-dump-times "builtin_memset" 1 "dse1" } } */
31 /* { dg-final { scan-tree-dump-not "builtin_(bcopy|bzero|memcpy|memmove)" "dse1" } } */
32