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