]> andersk Git - splint.git/blame - test/alias3.c
Fixes for win32
[splint.git] / test / alias3.c
CommitLineData
885824d3 1/*
2** tests aliasing of arrays, structs and unions
3*/
4
5# include "alias3.lh"
6
7st gst;
8ut *gu;
9
10void model (int ia[])
11{
12 int *ip;
13
14 ip = &(ia[6]);
15 *ip = 3;
16 gst.a = 3; /* 1. Suspect modification of gst.a */
17 gu->a = 5; /* 2. Suspect modification of gu->a */
18}
19
20void modst (st s1)
21{
22 s1.a = 3;
23 *(s1.b) = 6;
24}
25
26void modu (ut *u)
27{
28 u->a = 5;
29}
30
31int f (int ia[], st s1, ut *u1)
32{
33 int *ip;
34 st sl;
35 ut *ul;
36
37 ip = &(ia[3]);
38 *ip = 7; /* modifies ia[3] */
39
40 ip = &(ia[*ip]);
41
42 *ip = 8; /* modifies ia[?] */
43
44 model(ia); /* modifies ia[6] */
45 ip = ia;
46 model(ip); /* modifies ia[6] */
47
48 s1.a = 3; /* okay */
49 *(s1.b) = 7; /* modifies *(s1.b) */
50
51 sl = s1; /* okay (sl is NOT an alias for s1) */
52 modst(sl); /* was: does not modify anything --- structure is passed by value */
53 /* NOT TRUE: does modify sl since *s1.b is the same reference */
54 sl.a = 3; /* okay */
55 ip = s1.b; /* okay, ip aliases s1.b */
56 *(s1.b) = 3; /* modifies s1.b */
57 *ip = 6; /* modifies s1.b */
58 *(sl.b) = 3; /* okay */
59
60 ul = u1; /* ul aliases u1 */
61 modu(ul); /* okay */
62 ul->a = 3; /* modifies u1->a */
63 sl = ul->s; /* okay */
64 sl.a = 3; /* okay */
65 *(sl.b) = 6; /* modifies *(u1->s.b) through alias */
66 return 5;
67}
This page took 0.710907 seconds and 5 git commands to generate.