aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/backend/degenerate-ptr.c
blob: 5e71d0d88ca1c9027c97ddbfe30e54f85816204d (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
extern int array[3];
extern int matrix[3][3];
extern int fun(int);

extern int fia(int []);
extern int fip(int *);
extern int fim(int (*)[3]);
extern int fvp(void *);
extern int ffp(int (*)(int));

void call(void);
void call(void)
{
	fia(array);

	fip(array);
	fim(matrix);

	fvp(array);
	fvp(matrix);

	fvp(fun);
	fvp(&fun);
	ffp(fun);
	ffp(&fun);
}

void local(void);
void local(void)
{
	int *ip;
	int (*im)[3];
	void *vp;
	int (*fp)(int);

	ip = array;
	im = matrix;

	vp = array;
	vp = matrix;

	vp = fun;
	vp = &fun;
	fp = fun;
	fp = &fun;
}


extern int *ip;
extern int (*im)[3];
extern void *vp;
extern int (*fp)(int);

void global(void);
void global(void)
{
	ip = array;
	im = matrix;

	vp = array;
	vp = matrix;

	vp = fun;
	vp = &fun;
	fp = fun;
	fp = &fun;
}

/*
 * check-name: degenerated pointer handling
 * check-command: ./sparsec -c $file -o tmp.o
 * check-known-to-fail
 */