#define __noderef __attribute__((noderef)) #define __bitwise __attribute__((bitwise)) #define __nocast __attribute__((nocast)) #define __safe __attribute__((safe)) static void test_spec(void) { unsigned int obj, *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; obj = obj; ptr = ptr; ptr = &obj; obj = *ptr; } static void test_const(void) { const int obj, *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; ptr = ptr; ptr = &obj; } static void test_volatile(void) { volatile int obj, *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; obj = obj; ptr = ptr; ptr = &obj; obj = *ptr; } static void test_restrict(void) { int *restrict obj, *restrict *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; obj = obj; ptr = ptr; ptr = &obj; obj = *ptr; } static void test_atomic(void) { int _Atomic obj, *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; obj = obj; ptr = ptr; ptr = &obj; obj = *ptr; } static void test_bitwise(void) { typedef int __bitwise type_t; type_t obj, *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; obj = obj; ptr = ptr; ptr = &obj; obj = *ptr; } static void test_static(void) { static int obj, *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; obj = obj; ptr = ptr; ptr = &obj; obj = *ptr; } static void test_tls(void) { __thread int obj, *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; obj = obj; ptr = ptr; ptr = &obj; obj = *ptr; } static void test_nocast(void) { int __nocast obj, *ptr; typeof(obj) var = obj; typeof(ptr) ptr2 = ptr; typeof(*ptr) var2 = obj; typeof(*ptr) *ptr3 = ptr; typeof(obj) *ptr4 = ptr; obj = obj; ptr = ptr; ptr = &obj; obj = *ptr; } /* * check-name: typeof-mods * * check-error-start * check-error-end */