aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/ptr-inherit.c
blob: 69e5a931b6cc8642cefd4973108937abc216c400 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#define	__user		__attribute__((address_space(1)))
#define	__noderef	__attribute__((noderef))
#define	__bitwise	__attribute__((bitwise))
#define	__nocast	__attribute__((nocast))
#define	__safe		__attribute__((safe))


/* Should be inherited? */
static void test_const(void)
{
	const int o;
	int *p = &o;			/* check-should-fail */
}

static void test_volatile(void)
{
	volatile int o;
	int *p = &o;			/* check-should-fail */
}

static void test_noderef(void)
{
	int __noderef o;
	int *p = &o;			/* check-should-fail */
}

static void test_bitwise(void)
{
	int __bitwise o;
	int *p = &o;			/* check-should-fail */
}

static void test_user(void)
{
	int __user o;
	int *p = &o;			/* check-should-fail */
}

static void test_nocast(void)
{
	int __nocast o;
	int __nocast *p = &o;		/* check-should-pass */
}

/* Should be ignored? */
static void test_static(void)
{
	/* storage is not inherited */
	static int o;
	int *p = &o;			/* check-should-pass */
}

static void test_tls(void)
{
	/* storage is not inherited */
	static __thread int o;
	int *p = &o;			/* check-should-pass */
}

/*
 * check-name: ptr-inherit.c
 *
 * check-error-start
ptr-inherit.c:12:19: warning: incorrect type in initializer (different modifiers)
ptr-inherit.c:12:19:    expected int *p
ptr-inherit.c:12:19:    got int const *
ptr-inherit.c:18:19: warning: incorrect type in initializer (different modifiers)
ptr-inherit.c:18:19:    expected int *p
ptr-inherit.c:18:19:    got int volatile *
ptr-inherit.c:24:19: warning: incorrect type in initializer (different modifiers)
ptr-inherit.c:24:19:    expected int *p
ptr-inherit.c:24:19:    got int [noderef] *
ptr-inherit.c:30:19: warning: incorrect type in initializer (different base types)
ptr-inherit.c:30:19:    expected int *p
ptr-inherit.c:30:19:    got restricted int *
ptr-inherit.c:36:19: warning: incorrect type in initializer (different address spaces)
ptr-inherit.c:36:19:    expected int *p
ptr-inherit.c:36:19:    got int <asn:1> *
 * check-error-end
 */