11f5207b7SJohn Levon #define __noderef __attribute__((noderef)) 21f5207b7SJohn Levon #define __bitwise __attribute__((bitwise)) 31f5207b7SJohn Levon #define __nocast __attribute__((nocast)) 41f5207b7SJohn Levon #define __safe __attribute__((safe)) 51f5207b7SJohn Levon test_spec(void)61f5207b7SJohn Levonstatic void test_spec(void) 71f5207b7SJohn Levon { 81f5207b7SJohn Levon unsigned int obj, *ptr; 91f5207b7SJohn Levon typeof(obj) var = obj; 101f5207b7SJohn Levon typeof(ptr) ptr2 = ptr; 111f5207b7SJohn Levon typeof(*ptr) var2 = obj; 121f5207b7SJohn Levon typeof(*ptr) *ptr3 = ptr; 131f5207b7SJohn Levon typeof(obj) *ptr4 = ptr; 141f5207b7SJohn Levon obj = obj; 151f5207b7SJohn Levon ptr = ptr; 161f5207b7SJohn Levon ptr = &obj; 171f5207b7SJohn Levon obj = *ptr; 181f5207b7SJohn Levon } 191f5207b7SJohn Levon test_const(void)201f5207b7SJohn Levonstatic void test_const(void) 211f5207b7SJohn Levon { 221f5207b7SJohn Levon const int obj, *ptr; 231f5207b7SJohn Levon typeof(obj) var = obj; 241f5207b7SJohn Levon typeof(ptr) ptr2 = ptr; 251f5207b7SJohn Levon typeof(*ptr) var2 = obj; 261f5207b7SJohn Levon typeof(*ptr) *ptr3 = ptr; 271f5207b7SJohn Levon typeof(obj) *ptr4 = ptr; 281f5207b7SJohn Levon ptr = ptr; 291f5207b7SJohn Levon ptr = &obj; 301f5207b7SJohn Levon } 311f5207b7SJohn Levon test_volatile(void)321f5207b7SJohn Levonstatic void test_volatile(void) 331f5207b7SJohn Levon { 341f5207b7SJohn Levon volatile int obj, *ptr; 351f5207b7SJohn Levon typeof(obj) var = obj; 361f5207b7SJohn Levon typeof(ptr) ptr2 = ptr; 371f5207b7SJohn Levon typeof(*ptr) var2 = obj; 381f5207b7SJohn Levon typeof(*ptr) *ptr3 = ptr; 391f5207b7SJohn Levon typeof(obj) *ptr4 = ptr; 401f5207b7SJohn Levon obj = obj; 411f5207b7SJohn Levon ptr = ptr; 421f5207b7SJohn Levon ptr = &obj; 431f5207b7SJohn Levon obj = *ptr; 441f5207b7SJohn Levon } 451f5207b7SJohn Levon test_restrict(void)46*c85f09ccSJohn Levonstatic void test_restrict(void) 47*c85f09ccSJohn Levon { 48*c85f09ccSJohn Levon int *restrict obj, *restrict *ptr; 49*c85f09ccSJohn Levon typeof(obj) var = obj; 50*c85f09ccSJohn Levon typeof(ptr) ptr2 = ptr; 51*c85f09ccSJohn Levon typeof(*ptr) var2 = obj; 52*c85f09ccSJohn Levon typeof(*ptr) *ptr3 = ptr; 53*c85f09ccSJohn Levon typeof(obj) *ptr4 = ptr; 54*c85f09ccSJohn Levon obj = obj; 55*c85f09ccSJohn Levon ptr = ptr; 56*c85f09ccSJohn Levon ptr = &obj; 57*c85f09ccSJohn Levon obj = *ptr; 58*c85f09ccSJohn Levon } 59*c85f09ccSJohn Levon test_atomic(void)60*c85f09ccSJohn Levonstatic void test_atomic(void) 61*c85f09ccSJohn Levon { 62*c85f09ccSJohn Levon int _Atomic obj, *ptr; 63*c85f09ccSJohn Levon typeof(obj) var = obj; 64*c85f09ccSJohn Levon typeof(ptr) ptr2 = ptr; 65*c85f09ccSJohn Levon typeof(*ptr) var2 = obj; 66*c85f09ccSJohn Levon typeof(*ptr) *ptr3 = ptr; 67*c85f09ccSJohn Levon typeof(obj) *ptr4 = ptr; 68*c85f09ccSJohn Levon obj = obj; 69*c85f09ccSJohn Levon ptr = ptr; 70*c85f09ccSJohn Levon ptr = &obj; 71*c85f09ccSJohn Levon obj = *ptr; 72*c85f09ccSJohn Levon } 73*c85f09ccSJohn Levon test_bitwise(void)741f5207b7SJohn Levonstatic void test_bitwise(void) 751f5207b7SJohn Levon { 761f5207b7SJohn Levon typedef int __bitwise type_t; 771f5207b7SJohn Levon type_t obj, *ptr; 781f5207b7SJohn Levon typeof(obj) var = obj; 791f5207b7SJohn Levon typeof(ptr) ptr2 = ptr; 801f5207b7SJohn Levon typeof(*ptr) var2 = obj; 811f5207b7SJohn Levon typeof(*ptr) *ptr3 = ptr; 821f5207b7SJohn Levon typeof(obj) *ptr4 = ptr; 831f5207b7SJohn Levon obj = obj; 841f5207b7SJohn Levon ptr = ptr; 851f5207b7SJohn Levon ptr = &obj; 861f5207b7SJohn Levon obj = *ptr; 871f5207b7SJohn Levon } 881f5207b7SJohn Levon test_static(void)891f5207b7SJohn Levonstatic void test_static(void) 901f5207b7SJohn Levon { 911f5207b7SJohn Levon static int obj, *ptr; 921f5207b7SJohn Levon typeof(obj) var = obj; 931f5207b7SJohn Levon typeof(ptr) ptr2 = ptr; 941f5207b7SJohn Levon typeof(*ptr) var2 = obj; 951f5207b7SJohn Levon typeof(*ptr) *ptr3 = ptr; 961f5207b7SJohn Levon typeof(obj) *ptr4 = ptr; 971f5207b7SJohn Levon obj = obj; 981f5207b7SJohn Levon ptr = ptr; 991f5207b7SJohn Levon ptr = &obj; 1001f5207b7SJohn Levon obj = *ptr; 1011f5207b7SJohn Levon } 1021f5207b7SJohn Levon test_tls(void)1031f5207b7SJohn Levonstatic void test_tls(void) 1041f5207b7SJohn Levon { 1051f5207b7SJohn Levon __thread int obj, *ptr; 1061f5207b7SJohn Levon typeof(obj) var = obj; 1071f5207b7SJohn Levon typeof(ptr) ptr2 = ptr; 1081f5207b7SJohn Levon typeof(*ptr) var2 = obj; 1091f5207b7SJohn Levon typeof(*ptr) *ptr3 = ptr; 1101f5207b7SJohn Levon typeof(obj) *ptr4 = ptr; 1111f5207b7SJohn Levon obj = obj; 1121f5207b7SJohn Levon ptr = ptr; 1131f5207b7SJohn Levon ptr = &obj; 1141f5207b7SJohn Levon obj = *ptr; 1151f5207b7SJohn Levon } 1161f5207b7SJohn Levon test_nocast(void)1171f5207b7SJohn Levonstatic void test_nocast(void) 1181f5207b7SJohn Levon { 1191f5207b7SJohn Levon int __nocast obj, *ptr; 1201f5207b7SJohn Levon typeof(obj) var = obj; 1211f5207b7SJohn Levon typeof(ptr) ptr2 = ptr; 1221f5207b7SJohn Levon typeof(*ptr) var2 = obj; 1231f5207b7SJohn Levon typeof(*ptr) *ptr3 = ptr; 1241f5207b7SJohn Levon typeof(obj) *ptr4 = ptr; 1251f5207b7SJohn Levon obj = obj; 1261f5207b7SJohn Levon ptr = ptr; 1271f5207b7SJohn Levon ptr = &obj; 1281f5207b7SJohn Levon obj = *ptr; 1291f5207b7SJohn Levon } 1301f5207b7SJohn Levon 1311f5207b7SJohn Levon /* 1321f5207b7SJohn Levon * check-name: typeof-mods 1331f5207b7SJohn Levon * 1341f5207b7SJohn Levon * check-error-start 1351f5207b7SJohn Levon * check-error-end 1361f5207b7SJohn Levon */ 137