blob: aa880f373088c5db684e0c3960e26b98cd7b1420 [file] [log] [blame]
#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
*/