1long subv0(void *p, int   a) { return p - ((void*)0); }
2long subvc(void *p, int   a) { return p - ((void*)8); }
3long subva(void *p, int   a) { return p - ((void*)a); }
4long subvq(void *p, void *q) { return p - q; }
5
6long subi0(int  *p, int   a) { return p - ((int *)0); }
7long subic(int  *p, int   a) { return p - ((int *)8); }
8long subia(int  *p, int   a) { return p - ((int *)a); }
9long subiq(int  *p, int  *q) { return p - q; }
10
11long subvm3(void *p, int   a) { return (p - ((void*)0)) * 3; }
12long subvx3(void *p, int   a) { return (p - ((void*)0)) ^ 3; }
13
14/*
15 * check-name: pointer-sub
16 * check-command: sparsec -Wno-int-to-pointer-cast -Wno-decl -c $file -o tmp.o
17 */
18