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 #if __SIZEOF_INT__ < 4
7 typedef __INT32_TYPE__ int32;
8 #else
9 typedef int int32;
10 #endif
11
12 void
foo(char * a,short * b,int32 * c,long long * d,float * e,double * f)13 foo (char *a, short *b, int32 *c, long long *d, float *e, double *f)
14 {
15 if (*a)
16 *a += 1;
17 if (*b)
18 *b = *a;
19 if (*c)
20 *c += 1;
21 if (*d)
22 *d = *c;
23 if (*e == *c)
24 *e = *c;
25 if (*f == *e)
26 *f = *e;
27 switch (*a)
28 {
29 case 2:
30 *b += 2;
31 break;
32 case 3:
33 *b += 3;
34 break;
35 case 4:
36 *b += 4;
37 break;
38 case 5:
39 *b += 5;
40 break;
41 case 6:
42 *b += 6;
43 break;
44 case 7 ... 24:
45 *b += 7;
46 break;
47 default:
48 break;
49 }
50 switch (*d)
51 {
52 case 3:
53 *d += 3;
54 case -4:
55 *d -= 4;
56 case -5:
57 *d -= 5;
58 case -6:
59 *d -= 6;
60 case -7:
61 *d -= 7;
62 case -8:
63 *d -= 8;
64 case -9:
65 *d -= 9;
66 case -10:
67 *d -= 10;
68 }
69 }
70
71 void
bar(int32 * c)72 bar (int32 *c)
73 {
74 if (*c == 27)
75 *c += 2;
76 if (*c == 37)
77 *c += 2;
78 }
79
80 int32
baz(int32 * c,long long d,long long e)81 baz (int32 *c, long long d, long long e)
82 {
83 *c = (*c == 48) ? 12 : 24;
84 return d == e;
85 }
86
87 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp1 \\(0, " 1 "optimized" } } */
88 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp2 \\(0, " 1 "optimized" } } */
89 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp4 \\(0, " 1 "optimized" } } */
90 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp8 \\(0, " 1 "optimized" } } */
91 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp4 \\(27, " 1 "optimized" } } */
92 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp4 \\(37, " 1 "optimized" } } */
93 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp4 \\(48, " 1 "optimized" } } */
94 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_cmp8 \\(" 1 "optimized" } } */
95 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_cmpf \\(" 1 "optimized" } } */
96 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_cmpd \\(" 1 "optimized" } } */
97 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_const_cmp" 7 "optimized" } } */
98 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_cmp" 3 "optimized" } } */
99 /* { dg-final { scan-tree-dump-times "__builtin___sanitizer_cov_trace_switch \\(" 2 "optimized" } } */
100