summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-21 01:39:57 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-21 01:39:57 +0300
commit67b886f2f27e1de8805172b46328a0eddfcc7b62 (patch)
treea4cfe78a8838e1d8bfc3a6bbc7131f508efb5581
parent105529f34d3f9b04661a8caf4842c0eeea9d1838 (diff)
downloadparanucker-67b886f2f27e1de8805172b46328a0eddfcc7b62.tar.gz
paranucker-67b886f2f27e1de8805172b46328a0eddfcc7b62.tar.bz2
paranucker-67b886f2f27e1de8805172b46328a0eddfcc7b62.tar.xz
paranucker-67b886f2f27e1de8805172b46328a0eddfcc7b62.zip
Add test14.
-rw-r--r--test/Makefile13
-rw-r--r--test/test14-01.txt578
-rw-r--r--test/test14-02.txt0
-rw-r--r--test/test14-03.txt12
-rw-r--r--test/test14-04.txt286
-rw-r--r--test/test14.c86
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;
+}