let -dD report macro definitions
[smatch.git] / validation / typeof-mods.c
blob9822e96f6caf915eb226880359a9eaf3cf8af0e9
1 #define __noderef __attribute__((noderef))
2 #define __bitwise __attribute__((bitwise))
3 #define __nocast __attribute__((nocast))
4 #define __safe __attribute__((safe))
6 static void test_spec(void)
8 unsigned int obj, *ptr;
9 typeof(obj) var = obj;
10 typeof(ptr) ptr2 = ptr;
11 typeof(*ptr) var2 = obj;
12 typeof(*ptr) *ptr3 = ptr;
13 typeof(obj) *ptr4 = ptr;
14 obj = obj;
15 ptr = ptr;
16 ptr = &obj;
17 obj = *ptr;
20 static void test_const(void)
22 const int obj, *ptr;
23 typeof(obj) var = obj;
24 typeof(ptr) ptr2 = ptr;
25 typeof(*ptr) var2 = obj;
26 typeof(*ptr) *ptr3 = ptr;
27 typeof(obj) *ptr4 = ptr;
28 ptr = ptr;
29 ptr = &obj;
32 static void test_volatile(void)
34 volatile int obj, *ptr;
35 typeof(obj) var = obj;
36 typeof(ptr) ptr2 = ptr;
37 typeof(*ptr) var2 = obj;
38 typeof(*ptr) *ptr3 = ptr;
39 typeof(obj) *ptr4 = ptr;
40 obj = obj;
41 ptr = ptr;
42 ptr = &obj;
43 obj = *ptr;
46 static void test_bitwise(void)
48 typedef int __bitwise type_t;
49 type_t obj, *ptr;
50 typeof(obj) var = obj;
51 typeof(ptr) ptr2 = ptr;
52 typeof(*ptr) var2 = obj;
53 typeof(*ptr) *ptr3 = ptr;
54 typeof(obj) *ptr4 = ptr;
55 obj = obj;
56 ptr = ptr;
57 ptr = &obj;
58 obj = *ptr;
61 static void test_static(void)
63 static int obj, *ptr;
64 typeof(obj) var = obj;
65 typeof(ptr) ptr2 = ptr;
66 typeof(*ptr) var2 = obj;
67 typeof(*ptr) *ptr3 = ptr;
68 typeof(obj) *ptr4 = ptr;
69 obj = obj;
70 ptr = ptr;
71 ptr = &obj;
72 obj = *ptr;
75 static void test_tls(void)
77 __thread int obj, *ptr;
78 typeof(obj) var = obj;
79 typeof(ptr) ptr2 = ptr;
80 typeof(*ptr) var2 = obj;
81 typeof(*ptr) *ptr3 = ptr;
82 typeof(obj) *ptr4 = ptr;
83 obj = obj;
84 ptr = ptr;
85 ptr = &obj;
86 obj = *ptr;
89 static void test_nocast(void)
91 int __nocast obj, *ptr;
92 typeof(obj) var = obj;
93 typeof(ptr) ptr2 = ptr;
94 typeof(*ptr) var2 = obj;
95 typeof(*ptr) *ptr3 = ptr;
96 typeof(obj) *ptr4 = ptr;
97 obj = obj;
98 ptr = ptr;
99 ptr = &obj;
100 obj = *ptr;
104 * check-name: typeof-mods
106 * check-error-start
107 * check-error-end