
abstptr.c: (in function main)
abstptr.c:13:3: Assignment of abst * to void *: vp = ap
abstptr.c:14:3: Assignment of abst * to int *: ip = ap2
abstptr.c:15:3: Assignment of int * to abst *: ap = ip
abstptr.c:16:17: Cast from underlying abstract type abst *: (void *)ap
abstptr.c:17:8: Dereference of null pointer ap: *ap
   abstptr.c:15:8: Storage ap becomes null
abstptr.c:19:16: Cast from underlying abstract type abst *: (void *)&a
abstptr.c:20:16: Cast to underlying abstract type abst *: (abst *)&b
abstptr.c:21:3: Assignment of int * to abst *: ap = &b
abstptr.c:22:3: Assignment of int to abst: *ap = b

Finished checking --- 9 code warnings, as expected

abstptr.c: (in function main)
abstptr.c:14:3: Assignment of abst * to int *: ip = ap2
abstptr.c:15:3: Assignment of int * to abst *: ap = ip
abstptr.c:17:8: Dereference of null pointer ap: *ap
   abstptr.c:15:8: Storage ap becomes null
abstptr.c:20:16: Cast to underlying abstract type abst *: (abst *)&b
abstptr.c:21:3: Assignment of int * to abst *: ap = &b
abstptr.c:22:3: Assignment of int to abst: *ap = b

Finished checking --- 6 code warnings, as expected
