Various minor fixes for compiler/linter (other then splint itself) warnings.
[splint-patched.git] / test / alias2.c
blobbfdf6ee0fe314c783441991f63c06dd9819b6ed0
1 int glob;
2 int *globp;
4 int f(int *a, int b, int **c)
6 int *x, *y, *z;
10 int *lx;
12 x = a;
13 lx = a;
15 /*@-shadow@*/ int *lx; /*@=shadow@*/
17 *lx = 3; /* 1. use before def */
18 y = *c;
20 *lx = 4; /* 2. modifies a */
22 x = y; /* x aliases *c */
23 x = *c;
26 if (b == *a)
28 x = a; /* okay - x alias a */
29 *x = 3; /* 3. modifies *a */
30 y = &glob;
32 else
34 *x = 3; /* 4. modifies **c */
35 y = globp;
38 *x = 4; /* 5, 6. bad - may modify *a or **c */
39 z = a;
41 if ((**c = b) == 3) /* 7. modifies **c */
43 *y = 3; /* 8, 9. may modify glob and *globp */
44 globp = a; /* 10. modifies globp */
45 a = y;
46 z = globp;
48 else
50 a = z;
53 *a = 3; /* 11, 12. modifies glob, *globp through y and z */
54 *z = 6; /* 13, 14. modifies *a, *globp */
55 *globp = 5; /* 15, 16. modifies *globp, *a */
56 return 3; /* 17. leaves globp aliasing a */