1 /* Basic test on number of inserted callbacks.  */
2 /* { dg-do compile } */
3 /* { dg-options "-fsanitize-coverage=trace-cmp -fdump-tree-optimized" } */
4 /* { dg-skip-if "different type layout" { avr-*-* } } */
5 
6 void
foo(char * a,short * b,int * c,long long * d,float * e,double * f)7 foo (char *a, short *b, int *c, long long *d, float *e, double *f)
8 {
9   if (*a)
10     *a += 1;
11   if (*b)
12     *b = *a;
13   if (*c)
14     *c += 1;
15   if (*d)
16     *d = *c;
17   if (*e == *c)
18     *e = *c;
19   if (*f == *e)
20     *f = *e;
21   switch (*a)
22     {
23     case 2:
24       *b += 2;
25       break;
26     case 3:
27       *b += 3;
28       break;
29     case 4:
30       *b += 4;
31       break;
32     case 5:
33       *b += 5;
34       break;
35     case 6:
36       *b += 6;
37       break;
38     case 7 ... 24:
39       *b += 7;
40       break;
41     default:
42       break;
43     }
44   switch (*d)
45     {
46     case 3:
47       *d += 3;
48     case -4:
49       *d -= 4;
50     case -5:
51       *d -= 5;
52     case -6:
53       *d -= 6;
54     case -7:
55       *d -= 7;
56     case -8:
57       *d -= 8;
58     case -9:
59       *d -= 9;
60     case -10:
61       *d -= 10;
62     }
63 }
64 
65 void
bar(int * c)66 bar (int *c)
67 {
68   if (*c == 27)
69     *c += 2;
70   if (*c == 37)
71     *c += 2;
72 }
73 
74 int
baz(int * c,long long d,long long e)75 baz (int *c, long long d, long long e)
76 {
77   *c = (*c == 48) ? 12 : 24;
78   return d == e;
79 }
80 
81 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp1 \\(0, " 1 "optimized" } } */
82 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp2 \\(0, " 1 "optimized" } } */
83 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp4 \\(0, " 1 "optimized" } } */
84 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp8 \\(0, " 1 "optimized" } } */
85 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp4 \\(27, " 1 "optimized" } } */
86 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp4 \\(37, " 1 "optimized" } } */
87 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp4 \\(48, " 1 "optimized" } } */
88 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_cmp8 \\(" 1 "optimized" } } */
89 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_cmpf \\(" 1 "optimized" } } */
90 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_cmpd \\(" 1 "optimized" } } */
91 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp" 7 "optimized" } } */
92 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_cmp" 3 "optimized" } } */
93 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_switch \\(" 2 "optimized" } } */
94