diff options
-rw-r--r-- | test/Makefile | 13 | ||||
-rw-r--r-- | test/test14-01.txt | 578 | ||||
-rw-r--r-- | test/test14-02.txt | 0 | ||||
-rw-r--r-- | test/test14-03.txt | 12 | ||||
-rw-r--r-- | test/test14-04.txt | 286 | ||||
-rw-r--r-- | test/test14.c | 86 |
6 files changed, 974 insertions, 1 deletions
diff --git a/test/Makefile b/test/Makefile index ff8ca81..ed4c210 100644 --- a/test/Makefile +++ b/test/Makefile @@ -12,7 +12,8 @@ TESTS10 = test10-01 test10-02 test10-03 test10-04 TESTS11 = test11-01 test11-02 test11-03 test11-04 TESTS12 = test12-01 test12-02 test12-03 test12-04 TESTS13 = test13-01 test13-02 test13-03 test13-04 test13-05 -ALLTESTS = test01 test02 test03 test04 test05 test06 test07 test08 test09 test10 test11 test12 test13 ${TESTS01} ${TESTS02} ${TESTS03} ${TESTS04} ${TESTS05} ${TESTS06} ${TESTS07} ${TESTS08} ${TESTS09} ${TESTS10} ${TESTS11} ${TESTS12} ${TESTS13} +TESTS14 = test14-01 test14-02 test14-03 test14-04 +ALLTESTS = test01 test02 test03 test04 test05 test06 test07 test08 test09 test10 test11 test12 test13 test14 ${TESTS01} ${TESTS02} ${TESTS03} ${TESTS04} ${TESTS05} ${TESTS06} ${TESTS07} ${TESTS08} ${TESTS09} ${TESTS10} ${TESTS11} ${TESTS12} ${TESTS13} ${TESTS14} .PHONY: ${ALLTESTS} ${CRASHES} all crashes @@ -156,6 +157,16 @@ test13-04: test13-05: $(call CMD,dumpnullpointers,test13.c,test13-05.txt) +test14: ${TESTS14} +test14-01: + $(call CMD,dump,test14.c,test14-01.txt) +test14-02: + $(call CMD,dumpunsupported,test14.c,test14-02.txt) +test14-03: + $(call CMD,detectnullpointers,test14.c,test14-03.txt) +test14-04: + $(call CMD,dumpnullpointers,test14.c,test14-04.txt) + crashtest01: $(call CMDXX,dump,crashtest01.h,crashtest01-01.txt) crashtest02: diff --git a/test/test14-01.txt b/test/test14-01.txt new file mode 100644 index 0000000..c9ba090 --- /dev/null +++ b/test/test14-01.txt @@ -0,0 +1,578 @@ +function_decl func1 test14.c 10:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test14.c 10:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + - isUsed: 1 + parm_decl a test14.c 10:17 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + bind_expr test14.c 11:1 - code + modify_expr test14.c 12:8 - operand + indirect_ref test14.c 12:5 - operand + - isUsed: 1 + parm_decl a test14.c 10:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 100 - operand + block - operand +function_decl func2 test14.c 15:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test14.c 15:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + - isUsed: 1 + parm_decl a test14.c 15:17 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + bind_expr test14.c 16:1 - code + cond_expr test14.c 17:8 - operand + eq_expr test14.c 17:9 - operand + - isUsed: 1 + parm_decl a test14.c 15:17 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + return_expr test14.c 18:9 - operand + modify_expr test14.c 20:12 - operand + indirect_ref test14.c 20:9 - operand + - isUsed: 1 + parm_decl a test14.c 15:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 200 - operand + block - operand +function_decl func3 test14.c 23:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test14.c 23:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + - isUsed: 1 + parm_decl a test14.c 23:17 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + bind_expr test14.c 24:1 - code + statement_list - operand + cond_expr test14.c 25:8 - statement + eq_expr test14.c 25:9 - operand + - isUsed: 1 + parm_decl a test14.c 23:17 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + return_expr test14.c 26:9 - operand + modify_expr test14.c 28:8 - statement + indirect_ref test14.c 28:5 - operand + - isUsed: 1 + parm_decl a test14.c 23:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 300 - operand + block - operand +function_decl func4 test14.c 31:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test14.c 31:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + - isUsed: 1 + parm_decl a test14.c 31:17 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + bind_expr test14.c 32:1 - code + cond_expr test14.c 33:8 - operand + ne_expr test14.c 33:9 - operand + - isUsed: 1 + parm_decl a test14.c 31:17 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + modify_expr test14.c 35:12 - operand + indirect_ref test14.c 35:9 - operand + - isUsed: 1 + parm_decl a test14.c 31:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 400 - operand + block - operand +function_decl func5 test14.c 39:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test14.c 39:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + - isUsed: 1 + parm_decl a test14.c 39:17 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + bind_expr test14.c 40:1 - code + statement_list - operand + cond_expr test14.c 41:8 - statement + ne_expr test14.c 41:9 - operand + - isUsed: 1 + parm_decl a test14.c 39:17 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + modify_expr test14.c 43:12 - operand + indirect_ref test14.c 43:9 - operand + - isUsed: 1 + parm_decl a test14.c 39:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 500 - operand + modify_expr test14.c 45:8 - statement + indirect_ref test14.c 45:5 - operand + - isUsed: 1 + parm_decl a test14.c 39:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 600 - operand + block - operand +function_decl func6 test14.c 48:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test14.c 48:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + - isUsed: 1 + parm_decl a test14.c 48:17 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + bind_expr test14.c 49:1 - code + statement_list - operand + cond_expr test14.c 50:8 - statement + eq_expr test14.c 50:9 - operand + - isUsed: 1 + parm_decl a test14.c 48:17 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + bind_expr test14.c 51:5 - operand + var_decl k test14.c 52:13 - operand + integer_cst 32 - decl size + integer_cst 10 - initial + integer_type - var type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + statement_list - operand + decl_expr test14.c 52:13 - statement + var_decl k test14.c 52:13 - operand + return_expr test14.c 53:9 - statement + block - operand + var_decl k test14.c 52:13 - block vars + modify_expr test14.c 56:8 - statement + indirect_ref test14.c 56:5 - operand + - isUsed: 1 + parm_decl a test14.c 48:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 700 - operand + block - operand + block - sub block + var_decl k test14.c 52:13 - block vars +function_decl func7 test14.c 59:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test14.c 59:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + - isUsed: 1 + parm_decl aptr test14.c 59:17 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + bind_expr test14.c 60:1 - code + statement_list - operand + cond_expr test14.c 61:8 - statement + integer_cst 0 - operand + cond_expr test14.c 63:12 - operand + eq_expr test14.c 63:13 - operand + - isUsed: 1 + parm_decl aptr test14.c 59:17 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + bind_expr test14.c 64:9 - operand + var_decl k test14.c 65:17 - operand + integer_cst 32 - decl size + integer_cst 10 - initial + integer_type - var type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + statement_list - operand + decl_expr test14.c 65:17 - statement + var_decl k test14.c 65:17 - operand + return_expr test14.c 66:13 - statement + block - operand + var_decl k test14.c 65:17 - block vars + modify_expr test14.c 70:11 - statement + indirect_ref test14.c 70:5 - operand + - isUsed: 1 + parm_decl aptr test14.c 59:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 800 - operand + block - operand + block - sub block + var_decl k test14.c 65:17 - block vars +function_decl func8 test14.c 73:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test14.c 73:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + - isUsed: 1 + parm_decl aptr test14.c 73:17 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + bind_expr test14.c 74:1 - code + statement_list - operand + cond_expr test14.c 75:8 - statement + eq_expr test14.c 75:9 - operand + - isUsed: 1 + parm_decl aptr test14.c 73:17 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + statement_list - operand + cond_expr test14.c 77:12 - statement + integer_cst 0 - operand + bind_expr test14.c 78:9 - operand + var_decl k test14.c 79:17 - operand + integer_cst 32 - decl size + integer_cst 10 - initial + integer_type - var type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + statement_list - operand + decl_expr test14.c 79:17 - statement + var_decl k test14.c 79:17 - operand + decl_expr test14.c 80:17 - statement + var_decl l test14.c 80:17 - operand + integer_cst 32 - decl size + integer_cst 20 - initial + integer_type - var type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + block - operand + var_decl k test14.c 79:17 - block vars + var_decl l test14.c 80:17 - block vars + return_expr test14.c 82:9 - statement + modify_expr test14.c 85:11 - statement + indirect_ref test14.c 85:5 - operand + - isUsed: 1 + parm_decl aptr test14.c 73:17 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 900 - operand + block - operand + block - sub block + var_decl k test14.c 79:17 - block vars + var_decl l test14.c 80:17 - block vars diff --git a/test/test14-02.txt b/test/test14-02.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/test14-02.txt diff --git a/test/test14-03.txt b/test/test14-03.txt new file mode 100644 index 0000000..88a4c9a --- /dev/null +++ b/test/test14-03.txt @@ -0,0 +1,12 @@ +test14.c: In function 'func1': +test14.c:12:8: warning: Using parameter 'a' without checking for null pointer + *a = 100; + ^ +test14.c: In function 'func5': +test14.c:45:8: warning: Using parameter 'a' without checking for null pointer + *a = 600; + ^ +test14.c: In function 'func7': +test14.c:70:11: warning: Using parameter 'aptr' without checking for null pointer + *aptr = 800; + ^ diff --git a/test/test14-04.txt b/test/test14-04.txt new file mode 100644 index 0000000..74997b8 --- /dev/null +++ b/test/test14-04.txt @@ -0,0 +1,286 @@ +function_decl func1: +bind_expr : a, +modify_expr : a, +test14.c: In function 'func1': +test14.c:12:8: warning: Using parameter 'a' without checking for null pointer + *a = 100; + ^ +indirect_ref : a, +parm_decl a: a, +pointer_type : a, +integer_type : a, +type_decl int: a, +integer_cst 32: a, +integer_cst -2147483648: a, +integer_cst 2147483647: a, +integer_cst 64: a, +integer_cst 100: a, +block : a, +function_decl func2: +bind_expr : a, +cond_expr : a, +eq_expr : a, +parm_decl a: a, +pointer_type : a, +integer_type : a, +type_decl int: a, +integer_cst 32: a, +integer_cst -2147483648: a, +integer_cst 2147483647: a, +integer_cst 64: a, +integer_cst 0: a, +return_expr : a, +modify_expr : +indirect_ref : +parm_decl a: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 200: +block : a, +function_decl func3: +bind_expr : a, +statement_list : a, +cond_expr : a, +eq_expr : a, +parm_decl a: a, +pointer_type : a, +integer_type : a, +type_decl int: a, +integer_cst 32: a, +integer_cst -2147483648: a, +integer_cst 2147483647: a, +integer_cst 64: a, +integer_cst 0: a, +return_expr : a, +modify_expr : a, +indirect_ref : +parm_decl a: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 300: +block : a, +function_decl func4: +bind_expr : a, +cond_expr : a, +ne_expr : a, +parm_decl a: a, +pointer_type : a, +integer_type : a, +type_decl int: a, +integer_cst 32: a, +integer_cst -2147483648: a, +integer_cst 2147483647: a, +integer_cst 64: a, +integer_cst 0: a, +modify_expr : +indirect_ref : +parm_decl a: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 400: +block : a, +function_decl func5: +bind_expr : a, +statement_list : a, +cond_expr : a, +ne_expr : a, +parm_decl a: a, +pointer_type : a, +integer_type : a, +type_decl int: a, +integer_cst 32: a, +integer_cst -2147483648: a, +integer_cst 2147483647: a, +integer_cst 64: a, +integer_cst 0: a, +modify_expr : +indirect_ref : +parm_decl a: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 500: +modify_expr : a, +test14.c: In function 'func5': +test14.c:45:8: warning: Using parameter 'a' without checking for null pointer + *a = 600; + ^ +indirect_ref : a, +parm_decl a: a, +pointer_type : a, +integer_type : a, +type_decl int: a, +integer_cst 32: a, +integer_cst -2147483648: a, +integer_cst 2147483647: a, +integer_cst 64: a, +integer_cst 600: a, +block : a, +function_decl func6: +bind_expr : a, +statement_list : a, +cond_expr : a, +eq_expr : a, +parm_decl a: a, +pointer_type : a, +integer_type : a, +type_decl int: a, +integer_cst 32: a, +integer_cst -2147483648: a, +integer_cst 2147483647: a, +integer_cst 64: a, +integer_cst 0: a, +bind_expr : a, +var_decl k: a, +integer_cst 32: a, +integer_cst 10: a, +integer_type : a, +type_decl int: a, +integer_cst 32: a, +integer_cst -2147483648: a, +integer_cst 2147483647: a, +statement_list : a, +decl_expr : a, +var_decl k: a, +return_expr : a, +block : a, +var_decl k: a, +modify_expr : a, +indirect_ref : +parm_decl a: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 700: +block : a, +block : +var_decl k: +function_decl func7: +bind_expr : aptr, +statement_list : aptr, +cond_expr : aptr, +integer_cst 0: aptr, +cond_expr : aptr, +eq_expr : aptr, +parm_decl aptr: aptr, +pointer_type : aptr, +integer_type : aptr, +type_decl int: aptr, +integer_cst 32: aptr, +integer_cst -2147483648: aptr, +integer_cst 2147483647: aptr, +integer_cst 64: aptr, +integer_cst 0: aptr, +bind_expr : aptr, +var_decl k: aptr, +integer_cst 32: aptr, +integer_cst 10: aptr, +integer_type : aptr, +type_decl int: aptr, +integer_cst 32: aptr, +integer_cst -2147483648: aptr, +integer_cst 2147483647: aptr, +statement_list : aptr, +decl_expr : aptr, +var_decl k: aptr, +return_expr : aptr, +block : aptr, +var_decl k: aptr, +modify_expr : aptr, +test14.c: In function 'func7': +test14.c:70:11: warning: Using parameter 'aptr' without checking for null pointer + *aptr = 800; + ^ +indirect_ref : aptr, +parm_decl aptr: aptr, +pointer_type : aptr, +integer_type : aptr, +type_decl int: aptr, +integer_cst 32: aptr, +integer_cst -2147483648: aptr, +integer_cst 2147483647: aptr, +integer_cst 64: aptr, +integer_cst 800: aptr, +block : aptr, +block : aptr, +var_decl k: aptr, +function_decl func8: +bind_expr : aptr, +statement_list : aptr, +cond_expr : aptr, +eq_expr : aptr, +parm_decl aptr: aptr, +pointer_type : aptr, +integer_type : aptr, +type_decl int: aptr, +integer_cst 32: aptr, +integer_cst -2147483648: aptr, +integer_cst 2147483647: aptr, +integer_cst 64: aptr, +integer_cst 0: aptr, +statement_list : aptr, +cond_expr : aptr, +integer_cst 0: aptr, +bind_expr : aptr, +var_decl k: aptr, +integer_cst 32: aptr, +integer_cst 10: aptr, +integer_type : aptr, +type_decl int: aptr, +integer_cst 32: aptr, +integer_cst -2147483648: aptr, +integer_cst 2147483647: aptr, +statement_list : aptr, +decl_expr : aptr, +var_decl k: aptr, +decl_expr : aptr, +var_decl l: aptr, +integer_cst 32: aptr, +integer_cst 20: aptr, +integer_type : aptr, +type_decl int: aptr, +integer_cst 32: aptr, +integer_cst -2147483648: aptr, +integer_cst 2147483647: aptr, +block : aptr, +var_decl k: aptr, +var_decl l: aptr, +return_expr : aptr, +modify_expr : aptr, +indirect_ref : +parm_decl aptr: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 900: +block : aptr, +block : +var_decl k: +var_decl l: diff --git a/test/test14.c b/test/test14.c new file mode 100644 index 0000000..3aca55b --- /dev/null +++ b/test/test14.c @@ -0,0 +1,86 @@ +void func1(int *a); +void func2(int *a); +void func3(int *a); +void func4(int *a); +void func5(int *a); +void func6(int *a); +void func7(int *a); +void func8(int *a); + +void func1(int *a) +{ + *a = 100; +} + +void func2(int *a) +{ + if (!a) + return; + else + *a = 200; +} + +void func3(int *a) +{ + if (!a) + return; + + *a = 300; +} + +void func4(int *a) +{ + if (a) + { + *a = 400; + } +} + +void func5(int *a) +{ + if (a) + { + *a = 500; + } + *a = 600; +} + +void func6(int *a) +{ + if (!a) + { + int k = 10; + return; + } + + *a = 700; +} + +void func7(int *aptr) +{ + if (1 == 0) + { + if (!aptr) + { + int k = 10; + return; + } + } + + *aptr = 800; +} + +void func8(int *aptr) +{ + if (!aptr) + { + if (1 == 0) + { + int k = 10; + int l = 20; + } + return; + } + + *aptr = 900; +} |