
funcpointer.c: (in function func2)
funcpointer.c:13:27: Possibly null storage returned as non-null:
                        (int *)malloc(sizeof(int))
funcpointer.c:13:27: Returned storage not completely defined (storage pointed
    to by [result of malloc] is undefined): (int *)malloc(sizeof(int))
funcpointer.c: (in function func5)
funcpointer.c:19:28: Immediate address &i returned as implicitly only: &i
funcpointer.c: (in function main)
funcpointer.c:28:3: Assignment of [function (void) returns int] to f1:
                       t1 = func1
funcpointer.c:29:3: Assignment of [function (void) returns int ***] to f1:
                       t1 = func4
funcpointer.c:33:3: Assignment of [function (void) returns int *] to f2:
                       t2 = func2
funcpointer.c:36:3: Assignment of [function (void) returns int **] to f3 *:
                       t3p = func3
funcpointer.c:38:3: Assignment of [function (void) returns int *] to f4 *:
                       t4 = func2
funcpointer.c:41:7: Call to non-function (type f1): (t1)
funcpointer.c:43:3: Assignment of int *** to int *: xp = (*t1)()
funcpointer.c:44:8: Call to non-function (type f4 *): (t4)
funcpointer.c:46:3: Assignment of [function (void) returns int] to f6:
                       t6 = func1
funcpointer.c:46:3: Invalid left-hand side of assignment (function type f6): t6
funcpointer.c:47:3: Invalid left-hand side of assignment (function type f6): t6
funcpointer.c:48:10: Function (t6) called with 0 args, expects 2
funcpointer.c:49:10: Function (t6) called with 1 args, expects 2
funcpointer.c:50:11: Function (t6) called with 1 args, expects 2
funcpointer.c:50:10: Function ((t6)(3)) called with 0 args, expects 1

Finished checking --- 18 code warnings, as expected
