summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-21 00:49:08 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-21 00:49:08 +0300
commitea10f7bf8cadb21a392b06e1c7f50dcffca7ea89 (patch)
treed34515a71de1f046e07c5857154ce98cf8299e58
parent088a411ead941fc8b5d5eb978e4b6fed0bcd03e4 (diff)
downloadparanucker-ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89.tar.gz
paranucker-ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89.tar.bz2
paranucker-ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89.tar.xz
paranucker-ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89.zip
Add test13.
-rw-r--r--test/Makefile18
-rw-r--r--test/test13-01.txt662
-rw-r--r--test/test13-02.txt7
-rw-r--r--test/test13-03.txt31
-rw-r--r--test/test13-04.txt0
-rw-r--r--test/test13-05.txt188
-rw-r--r--test/test13.c47
7 files changed, 952 insertions, 1 deletions
diff --git a/test/Makefile b/test/Makefile
index 7e7b99e..ff8ca81 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -11,7 +11,8 @@ TESTS09 = test09-01 test09-02 test09-03 test09-04
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
-ALLTESTS = test01 test02 test03 test04 test05 test06 test07 test08 test09 test10 test11 test12 ${TESTS01} ${TESTS02} ${TESTS03} ${TESTS04} ${TESTS05} ${TESTS06} ${TESTS07} ${TESTS08} ${TESTS09} ${TESTS10} ${TESTS11} ${TESTS12}
+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}
.PHONY: ${ALLTESTS} ${CRASHES} all crashes
@@ -20,7 +21,10 @@ CXX := g++-5
MAKEFLAGS += --jobs=9
PLUGINXX = ../build/src/.libs/cppastdumper.so
+PLUGIN = ../build/src/.libs/astdumper.so
+
CMDXX = LANG=C ${CXX} -c -fplugin=${PLUGINXX} -fplugin-arg-cppastdumper-command=${1} ${2} -o ../build/${3}.out 2>${3}
+CMD = LANG=C ${CC} -c -fplugin=${PLUGIN} -fplugin-arg-astdumper-command=${1} ${2} -o ../build/${3}.out 2>${3}
all: ${ALLTESTS} ${CRASHES}
tests: ${ALLTESTS}
@@ -140,6 +144,18 @@ test12-03:
test12-04:
$(call CMDXX,detectnullpointers,test12.cpp,test12-04.txt)
+test13: ${TESTS13}
+test13-01:
+ $(call CMD,dump,test13.c,test13-01.txt)
+test13-02:
+ $(call CMD,findargs,test13.c,test13-02.txt)
+test13-03:
+ $(call CMD,detectnullpointers,test13.c,test13-03.txt)
+test13-04:
+ $(call CMD,dumpunsupported,test13.c,test13-04.txt)
+test13-05:
+ $(call CMD,dumpnullpointers,test13.c,test13-05.txt)
+
crashtest01:
$(call CMDXX,dump,crashtest01.h,crashtest01-01.txt)
crashtest02:
diff --git a/test/test13-01.txt b/test/test13-01.txt
new file mode 100644
index 0000000..52a1b4d
--- /dev/null
+++ b/test/test13-01.txt
@@ -0,0 +1,662 @@
+function_decl func1 test13.c 10:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void - type name
+ tree_list - arg types
+ integer_type - value
+ - 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
+ 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
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char - type name
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void - type name
+ result_decl test13.c 10:6 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void - type name
+ parm_decl a test13.c 10:16 - argument
+ integer_type - decl 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 32 - parm size
+ - isUsed: 1
+ parm_decl b test13.c 10:24 - 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
+ parm_decl c test13.c 10:32 - argument
+ integer_type - decl 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 8 - parm size
+ bind_expr test13.c 11:1 - code
+ modify_expr test13.c 12:8 - operand
+ indirect_ref test13.c 12:5 - operand
+ - isUsed: 1
+ parm_decl b test13.c 10:24 - 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 test13.c 15:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void - type name
+ tree_list - arg types
+ integer_type - value
+ - 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
+ 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
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char - type name
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void - type name
+ result_decl test13.c 15:6 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void - type name
+ parm_decl a test13.c 15:16 - argument
+ integer_type - decl 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 32 - parm size
+ - isUsed: 1
+ parm_decl b test13.c 15:24 - 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
+ parm_decl c test13.c 15:32 - argument
+ integer_type - decl 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 8 - parm size
+ bind_expr test13.c 16:1 - code
+ modify_expr test13.c 17:14 - operand
+ indirect_ref test13.c 17:5 - operand
+ pointer_plus_expr test13.c 17:9 - ref
+ - isUsed: 1
+ parm_decl b test13.c 15:24 - 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 4 - operand
+ integer_cst 200 - operand
+ block - operand
+function_decl func3 test13.c 20:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void - type name
+ tree_list - arg types
+ integer_type - value
+ - 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
+ 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
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char - type name
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void - type name
+ result_decl test13.c 20:6 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void - type name
+ parm_decl a test13.c 20:16 - argument
+ integer_type - decl 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 32 - parm size
+ - isUsed: 1
+ parm_decl b test13.c 20:24 - 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
+ parm_decl c test13.c 20:32 - argument
+ integer_type - decl 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 8 - parm size
+ bind_expr test13.c 21:1 - code
+ modify_expr test13.c 22:20 - operand
+ indirect_ref test13.c 22:5 - operand
+ pointer_plus_expr test13.c 22:9 - ref
+ - isUsed: 1
+ parm_decl b test13.c 20:24 - 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 8 - operand
+ integer_cst 300 - operand
+ block - operand
+function_decl func5 test13.c 25:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void - type name
+ tree_list - arg types
+ integer_type - value
+ - 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
+ 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
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char - type name
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void - type name
+ result_decl test13.c 25:6 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void - type name
+ parm_decl a test13.c 25:16 - argument
+ integer_type - decl 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 32 - parm size
+ - isUsed: 1
+ parm_decl b test13.c 25:24 - 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
+ parm_decl c test13.c 25:32 - argument
+ integer_type - decl 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 8 - parm size
+ bind_expr test13.c 26:1 - code
+ var_decl var1 test13.c 27:9 - operand
+ - isUsed: 1
+ integer_cst 32 - decl size
+ integer_cst 1 - 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 test13.c 27:9 - statement
+ var_decl var1 test13.c 27:9 - operand
+ - isUsed: 1
+ modify_expr test13.c 28:17 - statement
+ indirect_ref test13.c 28:5 - operand
+ pointer_plus_expr test13.c 28:12 - ref
+ - isUsed: 1
+ parm_decl b test13.c 25:24 - 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
+ nop_expr - operand
+ mult_expr test13.c 28:12 - operand
+ nop_expr - operand
+ var_decl var1 test13.c 27:9 - operand
+ - isUsed: 1
+ integer_cst 4 - operand
+ integer_cst 400 - operand
+ block - operand
+ var_decl var1 test13.c 27:9 - block vars
+ - isUsed: 1
+function_decl func6 test13.c 31:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void - type name
+ tree_list - arg types
+ integer_type - value
+ - 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
+ 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
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char - type name
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void - type name
+ result_decl test13.c 31:6 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void - type name
+ parm_decl a test13.c 31:16 - argument
+ integer_type - decl 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 32 - parm size
+ - isUsed: 1
+ parm_decl b test13.c 31:24 - 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
+ parm_decl c test13.c 31:32 - argument
+ integer_type - decl 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 8 - parm size
+ bind_expr test13.c 32:1 - code
+ var_decl var2 test13.c 33:10 - operand
+ - isUsed: 1
+ integer_cst 64 - decl size
+ - isUsed: 1
+ parm_decl b test13.c 31:24 - initial
+ pointer_type - var 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
+ statement_list - operand
+ decl_expr test13.c 33:10 - statement
+ var_decl var2 test13.c 33:10 - operand
+ - isUsed: 1
+ modify_expr test13.c 34:11 - statement
+ indirect_ref test13.c 34:5 - operand
+ var_decl var2 test13.c 33:10 - ref
+ - isUsed: 1
+ integer_cst 500 - operand
+ block - operand
+ var_decl var2 test13.c 33:10 - block vars
+ - isUsed: 1
+function_decl func7 test13.c 37:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void - type name
+ tree_list - arg types
+ integer_type - value
+ - 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
+ 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
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char - type name
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void - type name
+ result_decl test13.c 37:6 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void - type name
+ parm_decl a test13.c 37:16 - argument
+ integer_type - decl 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 32 - parm size
+ - isUsed: 1
+ parm_decl b test13.c 37:24 - 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
+ parm_decl c test13.c 37:32 - argument
+ integer_type - decl 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 8 - parm size
+ bind_expr test13.c 38:1 - code
+ var_decl var3 test13.c 39:10 - operand
+ - isUsed: 1
+ integer_cst 64 - decl size
+ pointer_plus_expr test13.c 39:20 - initial
+ - isUsed: 1
+ parm_decl b test13.c 37:24 - 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 48 - operand
+ pointer_type - var 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
+ statement_list - operand
+ decl_expr test13.c 39:10 - statement
+ var_decl var3 test13.c 39:10 - operand
+ - isUsed: 1
+ modify_expr test13.c 40:11 - statement
+ indirect_ref test13.c 40:5 - operand
+ var_decl var3 test13.c 39:10 - ref
+ - isUsed: 1
+ integer_cst 600 - operand
+ block - operand
+ var_decl var3 test13.c 39:10 - block vars
+ - isUsed: 1
+function_decl func8 test13.c 43:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void - type name
+ tree_list - arg types
+ integer_type - value
+ - 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
+ 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
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char - type name
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void - type name
+ result_decl test13.c 43:6 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void - type name
+ parm_decl a test13.c 43:16 - argument
+ integer_type - decl 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 32 - parm size
+ - isUsed: 1
+ parm_decl bptr test13.c 43:24 - 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
+ parm_decl c test13.c 43:35 - argument
+ integer_type - decl 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 8 - parm size
+ bind_expr test13.c 44:1 - code
+ var_decl var4 test13.c 45:11 - operand
+ - isUsed: 1
+ integer_cst 64 - decl size
+ addr_expr test13.c 45:18 - initial
+ - isUsed: 1
+ parm_decl bptr test13.c 43:24 - 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
+ pointer_type - var type
+ pointer_type - nested 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
+ statement_list - operand
+ decl_expr test13.c 45:11 - statement
+ var_decl var4 test13.c 45:11 - operand
+ - isUsed: 1
+ modify_expr test13.c 46:12 - statement
+ indirect_ref test13.c 46:5 - operand
+ indirect_ref test13.c 46:6 - ref
+ var_decl var4 test13.c 45:11 - ref
+ - isUsed: 1
+ integer_cst 700 - operand
+ block - operand
+ var_decl var4 test13.c 45:11 - block vars
+ - isUsed: 1
diff --git a/test/test13-02.txt b/test/test13-02.txt
new file mode 100644
index 0000000..d077f83
--- /dev/null
+++ b/test/test13-02.txt
@@ -0,0 +1,7 @@
+func1: pointer_type b,
+func2: pointer_type b,
+func3: pointer_type b,
+func5: pointer_type b,
+func6: pointer_type b,
+func7: pointer_type b,
+func8: pointer_type bptr,
diff --git a/test/test13-03.txt b/test/test13-03.txt
new file mode 100644
index 0000000..be7b019
--- /dev/null
+++ b/test/test13-03.txt
@@ -0,0 +1,31 @@
+test13.c: In function 'func1':
+test13.c:12:8: warning: Using parameter 'b' without checking for null pointer
+ *b = 100;
+ ^
+test13.c: In function 'func2':
+test13.c:17:9: warning: Using parameter 'b' without checking for null pointer
+ *(1 + b) = 200;
+ ^
+test13.c: In function 'func3':
+test13.c:22:9: warning: Using parameter 'b' without checking for null pointer
+ *(1 + (1 + b)) = 300;
+ ^
+test13.c: In function 'func5':
+test13.c:28:12: warning: Using parameter 'b' without checking for null pointer
+ *(var1 + b) = 400;
+ ^
+test13.c: In function 'func6':
+test13.c:33:10: warning: Using parameter 'b' without checking for null pointer
+ int *var2 = b;
+ ^
+test13.c:33:10: warning: Using parameter 'b' without checking for null pointer
+test13.c:33:10: warning: Using parameter 'b' without checking for null pointer
+test13.c:33:10: warning: Using parameter 'b' without checking for null pointer
+test13.c: In function 'func7':
+test13.c:39:20: warning: Using parameter 'b' without checking for null pointer
+ int *var3 = 12 + b;
+ ^
+test13.c: In function 'func8':
+test13.c:45:18: warning: Using parameter 'bptr' without checking for null pointer
+ int **var4 = &bptr;
+ ^
diff --git a/test/test13-04.txt b/test/test13-04.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/test13-04.txt
diff --git a/test/test13-05.txt b/test/test13-05.txt
new file mode 100644
index 0000000..1a64c29
--- /dev/null
+++ b/test/test13-05.txt
@@ -0,0 +1,188 @@
+function_decl func1:
+bind_expr : b,
+modify_expr : b,
+test13.c: In function 'func1':
+test13.c:12:8: warning: Using parameter 'b' without checking for null pointer
+ *b = 100;
+ ^
+indirect_ref : b,
+parm_decl b: b,
+pointer_type : b,
+integer_type : b,
+type_decl int: b,
+integer_cst 32: b,
+integer_cst -2147483648: b,
+integer_cst 2147483647: b,
+integer_cst 64: b,
+integer_cst 100: b,
+block : b,
+function_decl func2:
+bind_expr : b,
+modify_expr : b,
+indirect_ref : b,
+pointer_plus_expr : b,
+test13.c: In function 'func2':
+test13.c:17:9: warning: Using parameter 'b' without checking for null pointer
+ *(1 + b) = 200;
+ ^
+parm_decl b: b,
+pointer_type : b,
+integer_type : b,
+type_decl int: b,
+integer_cst 32: b,
+integer_cst -2147483648: b,
+integer_cst 2147483647: b,
+integer_cst 64: b,
+integer_cst 4: b,
+integer_cst 200: b,
+block : b,
+function_decl func3:
+bind_expr : b,
+modify_expr : b,
+indirect_ref : b,
+pointer_plus_expr : b,
+test13.c: In function 'func3':
+test13.c:22:9: warning: Using parameter 'b' without checking for null pointer
+ *(1 + (1 + b)) = 300;
+ ^
+parm_decl b: b,
+pointer_type : b,
+integer_type : b,
+type_decl int: b,
+integer_cst 32: b,
+integer_cst -2147483648: b,
+integer_cst 2147483647: b,
+integer_cst 64: b,
+integer_cst 8: b,
+integer_cst 300: b,
+block : b,
+function_decl func5:
+bind_expr : b,
+var_decl var1: b,
+integer_cst 32: b,
+integer_cst 1: b,
+integer_type : b,
+type_decl int: b,
+integer_cst 32: b,
+integer_cst -2147483648: b,
+integer_cst 2147483647: b,
+statement_list : b,
+decl_expr : b,
+var_decl var1: b,
+modify_expr : b,
+indirect_ref : b,
+pointer_plus_expr : b,
+test13.c: In function 'func5':
+test13.c:28:12: warning: Using parameter 'b' without checking for null pointer
+ *(var1 + b) = 400;
+ ^
+parm_decl b: b,
+pointer_type : b,
+integer_type : b,
+type_decl int: b,
+integer_cst 32: b,
+integer_cst -2147483648: b,
+integer_cst 2147483647: b,
+integer_cst 64: b,
+nop_expr : b,
+mult_expr : b,
+nop_expr : b,
+var_decl var1: b,
+integer_cst 4: b,
+integer_cst 400: b,
+block : b,
+var_decl var1: b,
+function_decl func6:
+bind_expr : b,
+var_decl var2: b,
+test13.c: In function 'func6':
+test13.c:33:10: warning: Using parameter 'b' without checking for null pointer
+ int *var2 = b;
+ ^
+integer_cst 64: b,
+parm_decl b: b,
+pointer_type : b,
+integer_type : b,
+type_decl int: b,
+integer_cst 32: b,
+integer_cst -2147483648: b,
+integer_cst 2147483647: b,
+statement_list : b,
+decl_expr : b,
+var_decl var2: b,
+test13.c:33:10: warning: Using parameter 'b' without checking for null pointer
+modify_expr : b,
+indirect_ref : b,
+var_decl var2: b,
+test13.c:33:10: warning: Using parameter 'b' without checking for null pointer
+integer_cst 500: b,
+block : b,
+var_decl var2: b,
+test13.c:33:10: warning: Using parameter 'b' without checking for null pointer
+function_decl func7:
+bind_expr : b,
+var_decl var3: b,
+integer_cst 64: b,
+pointer_plus_expr : b,
+test13.c: In function 'func7':
+test13.c:39:20: warning: Using parameter 'b' without checking for null pointer
+ int *var3 = 12 + b;
+ ^
+parm_decl b: b,
+pointer_type : b,
+integer_type : b,
+type_decl int: b,
+integer_cst 32: b,
+integer_cst -2147483648: b,
+integer_cst 2147483647: b,
+integer_cst 64: b,
+integer_cst 48: b,
+pointer_type : b,
+integer_type : b,
+type_decl int: b,
+integer_cst 32: b,
+integer_cst -2147483648: b,
+integer_cst 2147483647: b,
+statement_list : b,
+decl_expr : b,
+var_decl var3: b,
+modify_expr : b,
+indirect_ref : b,
+var_decl var3: b,
+integer_cst 600: b,
+block : b,
+var_decl var3: b,
+function_decl func8:
+bind_expr : bptr,
+var_decl var4: bptr,
+integer_cst 64: bptr,
+addr_expr : bptr,
+test13.c: In function 'func8':
+test13.c:45:18: warning: Using parameter 'bptr' without checking for null pointer
+ int **var4 = &bptr;
+ ^
+parm_decl bptr: bptr,
+pointer_type : bptr,
+integer_type : bptr,
+type_decl int: bptr,
+integer_cst 32: bptr,
+integer_cst -2147483648: bptr,
+integer_cst 2147483647: bptr,
+integer_cst 64: bptr,
+pointer_type : bptr,
+pointer_type : bptr,
+integer_type : bptr,
+type_decl int: bptr,
+integer_cst 32: bptr,
+integer_cst -2147483648: bptr,
+integer_cst 2147483647: bptr,
+statement_list : bptr,
+decl_expr : bptr,
+var_decl var4: bptr,
+modify_expr : bptr,
+indirect_ref : bptr,
+indirect_ref : bptr,
+var_decl var4: bptr,
+integer_cst 700: bptr,
+block : bptr,
+var_decl var4: bptr,
diff --git a/test/test13.c b/test/test13.c
new file mode 100644
index 0000000..320e202
--- /dev/null
+++ b/test/test13.c
@@ -0,0 +1,47 @@
+void func1(int a, int *b, char c);
+void func2(int a, int *b, char c);
+void func3(int a, int *b, char c);
+void func4(int a, int *b, char c);
+void func5(int a, int *b, char c);
+void func6(int a, int *b, char c);
+void func7(int a, int *b, char c);
+void func8(int a, int *b, char c);
+
+void func1(int a, int *b, char c)
+{
+ *b = 100;
+}
+
+void func2(int a, int *b, char c)
+{
+ *(1 + b) = 200;
+}
+
+void func3(int a, int *b, char c)
+{
+ *(1 + (1 + b)) = 300;
+}
+
+void func5(int a, int *b, char c)
+{
+ int var1 = 1;
+ *(var1 + b) = 400;
+}
+
+void func6(int a, int *b, char c)
+{
+ int *var2 = b;
+ *var2 = 500;
+}
+
+void func7(int a, int *b, char c)
+{
+ int *var3 = 12 + b;
+ *var3 = 600;
+}
+
+void func8(int a, int *bptr, char c)
+{
+ int **var4 = &bptr;
+ **var4 = 700;
+}