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