summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-20 20:57:54 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-20 20:57:54 +0300
commit792ca12e0862a95d6a9bb9e9095d03a7553ba899 (patch)
tree46bc87b62bdaf9ebb7097778ddb383ef2e940ece
parent55b526b5957de07cea7f89e345fda0277266e485 (diff)
downloadparanucker-792ca12e0862a95d6a9bb9e9095d03a7553ba899.tar.gz
paranucker-792ca12e0862a95d6a9bb9e9095d03a7553ba899.tar.bz2
paranucker-792ca12e0862a95d6a9bb9e9095d03a7553ba899.tar.xz
paranucker-792ca12e0862a95d6a9bb9e9095d03a7553ba899.zip
Add test 11. Update test results.
-rw-r--r--test/Makefile13
-rw-r--r--test/test09-03.txt150
-rw-r--r--test/test10-03.txt70
-rw-r--r--test/test11-01.txt317
-rw-r--r--test/test11-02.txt2
-rw-r--r--test/test11-03.txt117
-rw-r--r--test/test11-04.txt7
-rw-r--r--test/test11.cpp31
8 files changed, 596 insertions, 111 deletions
diff --git a/test/Makefile b/test/Makefile
index 166a3c5..c908d6e 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -9,7 +9,8 @@ TESTS07 = test07-01 test07-02 test07-03 test07-04 test07-05
TESTS08 = test08-01 test08-02 test08-03 test08-04
TESTS09 = test09-01 test09-02 test09-03 test09-04
TESTS10 = test10-01 test10-02 test10-03 test10-04
-ALLTESTS = test01 test02 test03 test04 test05 test06 test07 test08 test09 test10 ${TESTS01} ${TESTS02} ${TESTS03} ${TESTS04} ${TESTS05} ${TESTS06} ${TESTS07} ${TESTS08} ${TESTS09} ${TESTS10}
+TESTS11 = test11-01 test11-02 test11-03 test11-04
+ALLTESTS = test01 test02 test03 test04 test05 test06 test07 test08 test09 test10 test11 ${TESTS01} ${TESTS02} ${TESTS03} ${TESTS04} ${TESTS05} ${TESTS06} ${TESTS07} ${TESTS08} ${TESTS09} ${TESTS10} ${TESTS11}
.PHONY: ${ALLTESTS} ${CRASHES} all crashes
@@ -118,6 +119,16 @@ test10-03:
test10-04:
$(call CMD,detectnullpointers,test10.cpp,test10-04.txt)
+test11: ${TESTS11}
+test11-01:
+ $(call CMD,dump,test11.cpp,test11-01.txt)
+test11-02:
+ $(call CMD,findargs,test11.cpp,test11-02.txt)
+test11-03:
+ $(call CMD,dumpnullpointers,test11.cpp,test11-03.txt)
+test11-04:
+ $(call CMD,detectnullpointers,test11.cpp,test11-04.txt)
+
crashtest01:
$(call CMD,dump,crashtest01.h,crashtest01-01.txt)
crashtest02:
diff --git a/test/test09-03.txt b/test/test09-03.txt
index 031f42a..b336ee1 100644
--- a/test/test09-03.txt
+++ b/test/test09-03.txt
@@ -12,16 +12,16 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-eq_expr : ptr1, ptr2,
-parm_decl ptr2: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-integer_type : ptr1, ptr2,
-type_decl int: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst -2147483648: ptr1, ptr2,
-integer_cst 2147483647: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-integer_cst 0: ptr1, ptr2,
+eq_expr : ptr2,
+parm_decl ptr2: ptr2,
+pointer_type : ptr2,
+integer_type : ptr2,
+type_decl int: ptr2,
+integer_cst 32: ptr2,
+integer_cst -2147483648: ptr2,
+integer_cst 2147483647: ptr2,
+integer_cst 64: ptr2,
+integer_cst 0: ptr2,
return_expr : ptr1, ptr2,
cleanup_point_expr : ptr1, ptr2,
expr_stmt :
@@ -65,16 +65,16 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-eq_expr : ptr1, ptr2,
-parm_decl ptr2: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-integer_type : ptr1, ptr2,
-type_decl int: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst -2147483648: ptr1, ptr2,
-integer_cst 2147483647: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-integer_cst 0: ptr1, ptr2,
+eq_expr : ptr2,
+parm_decl ptr2: ptr2,
+pointer_type : ptr2,
+integer_type : ptr2,
+type_decl int: ptr2,
+integer_cst 32: ptr2,
+integer_cst -2147483648: ptr2,
+integer_cst 2147483647: ptr2,
+integer_cst 64: ptr2,
+integer_cst 0: ptr2,
return_expr : ptr1, ptr2,
cleanup_point_expr :
expr_stmt :
@@ -269,16 +269,16 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-ne_expr : ptr1, ptr2,
-parm_decl ptr2: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-integer_type : ptr1, ptr2,
-type_decl int: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst -2147483648: ptr1, ptr2,
-integer_cst 2147483647: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-integer_cst 0: ptr1, ptr2,
+ne_expr : ptr2,
+parm_decl ptr2: ptr2,
+pointer_type : ptr2,
+integer_type : ptr2,
+type_decl int: ptr2,
+integer_cst 32: ptr2,
+integer_cst -2147483648: ptr2,
+integer_cst 2147483647: ptr2,
+integer_cst 64: ptr2,
+integer_cst 0: ptr2,
return_expr : ptr1, ptr2,
cleanup_point_expr : ptr1, ptr2,
expr_stmt : ptr2,
@@ -326,16 +326,16 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-ne_expr : ptr1, ptr2,
-parm_decl ptr2: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-integer_type : ptr1, ptr2,
-type_decl int: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst -2147483648: ptr1, ptr2,
-integer_cst 2147483647: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-integer_cst 0: ptr1, ptr2,
+ne_expr : ptr2,
+parm_decl ptr2: ptr2,
+pointer_type : ptr2,
+integer_type : ptr2,
+type_decl int: ptr2,
+integer_cst 32: ptr2,
+integer_cst -2147483648: ptr2,
+integer_cst 2147483647: ptr2,
+integer_cst 64: ptr2,
+integer_cst 0: ptr2,
return_expr : ptr1, ptr2,
cleanup_point_expr : ptr2,
expr_stmt : ptr2,
@@ -627,16 +627,16 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-eq_expr : ptr1, ptr2,
-parm_decl ptr2: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-integer_type : ptr1, ptr2,
-type_decl int: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst -2147483648: ptr1, ptr2,
-integer_cst 2147483647: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-integer_cst 0: ptr1, ptr2,
+eq_expr : ptr2,
+parm_decl ptr2: ptr2,
+pointer_type : ptr2,
+integer_type : ptr2,
+type_decl int: ptr2,
+integer_cst 32: ptr2,
+integer_cst -2147483648: ptr2,
+integer_cst 2147483647: ptr2,
+integer_cst 64: ptr2,
+integer_cst 0: ptr2,
bind_expr : ptr1, ptr2,
var_decl k: ptr1, ptr2,
integer_cst 32: ptr1, ptr2,
@@ -723,16 +723,16 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-ne_expr : ptr1, ptr2,
-parm_decl ptr2: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-integer_type : ptr1, ptr2,
-type_decl int: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst -2147483648: ptr1, ptr2,
-integer_cst 2147483647: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-integer_cst 0: ptr1, ptr2,
+ne_expr : ptr2,
+parm_decl ptr2: ptr2,
+pointer_type : ptr2,
+integer_type : ptr2,
+type_decl int: ptr2,
+integer_cst 32: ptr2,
+integer_cst -2147483648: ptr2,
+integer_cst 2147483647: ptr2,
+integer_cst 64: ptr2,
+integer_cst 0: ptr2,
bind_expr : ptr1, ptr2,
var_decl k: ptr1, ptr2,
integer_cst 32: ptr1, ptr2,
@@ -821,21 +821,21 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-eq_expr : ptr1, ptr2,
-component_ref : ptr1, ptr2,
-indirect_ref : ptr1, ptr2,
-nop_expr : ptr1, ptr2,
-parm_decl this: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-record_type : ptr1, ptr2,
-type_decl Object1: ptr1, ptr2,
-field_decl k: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-type_decl Object1: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-field_decl k: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst 10: ptr1, ptr2,
+eq_expr : ptr2,
+component_ref : ptr2,
+indirect_ref : ptr2,
+nop_expr : ptr2,
+parm_decl this: ptr2,
+pointer_type : ptr2,
+record_type : ptr2,
+type_decl Object1: ptr2,
+field_decl k: ptr2,
+integer_cst 32: ptr2,
+type_decl Object1: ptr2,
+integer_cst 64: ptr2,
+field_decl k: ptr2,
+integer_cst 32: ptr2,
+integer_cst 10: ptr2,
cleanup_point_expr : ptr1, ptr2,
expr_stmt : ptr1, ptr2,
convert_expr : ptr1, ptr2,
diff --git a/test/test10-03.txt b/test/test10-03.txt
index 21bee41..9d1bf9d 100644
--- a/test/test10-03.txt
+++ b/test/test10-03.txt
@@ -314,16 +314,16 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-eq_expr : ptr1, ptr2,
-parm_decl ptr2: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-integer_type : ptr1, ptr2,
-type_decl int: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst -2147483648: ptr1, ptr2,
-integer_cst 2147483647: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-integer_cst 0: ptr1, ptr2,
+eq_expr : ptr2,
+parm_decl ptr2: ptr2,
+pointer_type : ptr2,
+integer_type : ptr2,
+type_decl int: ptr2,
+integer_cst 32: ptr2,
+integer_cst -2147483648: ptr2,
+integer_cst 2147483647: ptr2,
+integer_cst 64: ptr2,
+integer_cst 0: ptr2,
return_expr : ptr1, ptr2,
cleanup_point_expr :
expr_stmt :
@@ -394,31 +394,31 @@ integer_cst -2147483648: ptr1, ptr2,
integer_cst 2147483647: ptr1, ptr2,
integer_cst 64: ptr1, ptr2,
integer_cst 0: ptr1, ptr2,
-eq_expr : ptr1, ptr2,
-parm_decl ptr2: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-integer_type : ptr1, ptr2,
-type_decl int: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-integer_cst -2147483648: ptr1, ptr2,
-integer_cst 2147483647: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-integer_cst 0: ptr1, ptr2,
-eq_expr : ptr1, ptr2,
-component_ref : ptr1, ptr2,
-indirect_ref : ptr1, ptr2,
-nop_expr : ptr1, ptr2,
-parm_decl this: ptr1, ptr2,
-pointer_type : ptr1, ptr2,
-record_type : ptr1, ptr2,
-type_decl Object1: ptr1, ptr2,
-field_decl k: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-type_decl Object1: ptr1, ptr2,
-integer_cst 64: ptr1, ptr2,
-field_decl k: ptr1, ptr2,
-integer_cst 32: ptr1, ptr2,
-var_decl c: ptr1, ptr2,
+eq_expr : ptr2,
+parm_decl ptr2: ptr2,
+pointer_type : ptr2,
+integer_type : ptr2,
+type_decl int: ptr2,
+integer_cst 32: ptr2,
+integer_cst -2147483648: ptr2,
+integer_cst 2147483647: ptr2,
+integer_cst 64: ptr2,
+integer_cst 0: ptr2,
+eq_expr :
+component_ref :
+indirect_ref :
+nop_expr :
+parm_decl this:
+pointer_type :
+record_type :
+type_decl Object1:
+field_decl k:
+integer_cst 32:
+type_decl Object1:
+integer_cst 64:
+field_decl k:
+integer_cst 32:
+var_decl c:
cleanup_point_expr : ptr1, ptr2,
expr_stmt : ptr1, ptr2,
convert_expr : ptr1, ptr2,
diff --git a/test/test11-01.txt b/test/test11-01.txt
new file mode 100644
index 0000000..f89c71a
--- /dev/null
+++ b/test/test11-01.txt
@@ -0,0 +1,317 @@
+function_decl func1 test11.cpp 11:10
+- isPublic: 1
+ method_type - function type
+ void_type - method return type
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ record_type - method base type
+ type_decl Object1 test11.cpp 7:7 - type name
+ - isAutogenerated: 1
+ field_decl k test11.cpp 9:9 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Object1 test11.cpp 8:1 - field
+ - isAutogenerated: 1
+ tree_list - arg types
+ pointer_type - value
+ record_type - nested type
+ type_decl Object1 test11.cpp 7:7 - type name
+ - isAutogenerated: 1
+ field_decl k test11.cpp 9:9 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Object1 test11.cpp 8:1 - field
+ - isAutogenerated: 1
+ tree_list - chain
+ pointer_type - value
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ tree_list - chain
+ pointer_type - value
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ tree_list - chain
+ void_type - value
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ result_decl test11.cpp 12:5 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ parm_decl this test11.cpp 11:40 - argument
+ - isAutogenerated: 1
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Object1 test11.cpp 7:7 - type name
+ - isAutogenerated: 1
+ field_decl k test11.cpp 9:9 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Object1 test11.cpp 8:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 11:23 - argument
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ parm_decl ptr2 test11.cpp 11:36 - argument
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ statement_list - code
+ if_stmt test11.cpp 13:9 - statement
+ truth_orif_expr test11.cpp 13:19 - condition
+ eq_expr test11.cpp 13:14 - operand
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 11:23 - operand
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ integer_cst 0 - operand
+ eq_expr test11.cpp 13:32 - operand
+ component_ref test11.cpp 13:28 - operand
+ indirect_ref - object
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 11:23 - ref
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ integer_cst 1 - operand
+ return_expr test11.cpp 15:13 - then
+ cleanup_point_expr test11.cpp 18:24 - statement
+ expr_stmt test11.cpp 18:24 - operand
+ convert_expr - expresssion
+ modify_expr - operand
+ component_ref test11.cpp 18:15 - operand
+ indirect_ref - object
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 11:23 - ref
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ integer_cst 100 - operand
+function_decl func2 test11.cpp 21:10
+- isPublic: 1
+ method_type - function type
+ void_type - method return type
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ record_type - method base type
+ type_decl Object1 test11.cpp 7:7 - type name
+ - isAutogenerated: 1
+ field_decl k test11.cpp 9:9 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Object1 test11.cpp 8:1 - field
+ - isAutogenerated: 1
+ tree_list - arg types
+ pointer_type - value
+ record_type - nested type
+ type_decl Object1 test11.cpp 7:7 - type name
+ - isAutogenerated: 1
+ field_decl k test11.cpp 9:9 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Object1 test11.cpp 8:1 - field
+ - isAutogenerated: 1
+ tree_list - chain
+ pointer_type - value
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ tree_list - chain
+ pointer_type - value
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ tree_list - chain
+ void_type - value
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ result_decl test11.cpp 22:5 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ parm_decl this test11.cpp 21:40 - argument
+ - isAutogenerated: 1
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Object1 test11.cpp 7:7 - type name
+ - isAutogenerated: 1
+ field_decl k test11.cpp 9:9 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Object1 test11.cpp 8:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 21:23 - argument
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ parm_decl ptr2 test11.cpp 21:36 - argument
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ statement_list - code
+ if_stmt test11.cpp 23:9 - statement
+ truth_andif_expr test11.cpp 23:18 - condition
+ ne_expr - operand
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 21:23 - operand
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ integer_cst 0 - operand
+ eq_expr test11.cpp 23:31 - operand
+ component_ref test11.cpp 23:27 - operand
+ indirect_ref - object
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 21:23 - ref
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ integer_cst 1 - operand
+ statement_list - then
+ cleanup_point_expr test11.cpp 25:28 - statement
+ expr_stmt test11.cpp 25:28 - operand
+ convert_expr - expresssion
+ modify_expr - operand
+ component_ref test11.cpp 25:19 - operand
+ indirect_ref - object
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 21:23 - ref
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ integer_cst 100 - operand
+ return_expr test11.cpp 26:13 - statement
+ cleanup_point_expr test11.cpp 29:24 - statement
+ expr_stmt test11.cpp 29:24 - operand
+ convert_expr - expresssion
+ modify_expr - operand
+ component_ref test11.cpp 29:15 - operand
+ indirect_ref - object
+ - isUsed: 1
+ parm_decl ptr1 test11.cpp 21:23 - ref
+ pointer_type - decl type
+ record_type - nested type
+ type_decl Data1 test11.cpp 1:7 - type name
+ - isAutogenerated: 1
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ type_decl Data1 test11.cpp 2:1 - field
+ - isAutogenerated: 1
+ integer_cst 64 - parm size
+ field_decl val test11.cpp 4:13 - field
+ - signed
+ integer_cst 32 - decl size
+ integer_cst 200 - operand
diff --git a/test/test11-02.txt b/test/test11-02.txt
new file mode 100644
index 0000000..3390e93
--- /dev/null
+++ b/test/test11-02.txt
@@ -0,0 +1,2 @@
+func1: pointer_type ptr1, pointer_type ptr2,
+func2: pointer_type ptr1, pointer_type ptr2,
diff --git a/test/test11-03.txt b/test/test11-03.txt
new file mode 100644
index 0000000..5e7e1d1
--- /dev/null
+++ b/test/test11-03.txt
@@ -0,0 +1,117 @@
+function_decl func1:
+statement_list : ptr1, ptr2,
+if_stmt : ptr1, ptr2,
+truth_orif_expr : ptr1, ptr2,
+eq_expr : ptr1, ptr2,
+parm_decl ptr1: ptr1, ptr2,
+pointer_type : ptr1, ptr2,
+record_type : ptr1, ptr2,
+type_decl Data1: ptr1, ptr2,
+field_decl val: ptr1, ptr2,
+integer_cst 32: ptr1, ptr2,
+type_decl Data1: ptr1, ptr2,
+integer_cst 64: ptr1, ptr2,
+integer_cst 0: ptr1, ptr2,
+eq_expr : ptr2,
+component_ref : ptr2,
+indirect_ref : ptr2,
+parm_decl ptr1: ptr2,
+pointer_type : ptr2,
+record_type : ptr2,
+type_decl Data1: ptr2,
+field_decl val: ptr2,
+integer_cst 32: ptr2,
+type_decl Data1: ptr2,
+integer_cst 64: ptr2,
+field_decl val: ptr2,
+integer_cst 32: ptr2,
+integer_cst 1: ptr2,
+return_expr : ptr1, ptr2,
+cleanup_point_expr : ptr1, ptr2,
+expr_stmt : ptr2,
+convert_expr : ptr2,
+modify_expr : ptr2,
+component_ref : ptr2,
+indirect_ref : ptr2,
+parm_decl ptr1: ptr2,
+pointer_type : ptr2,
+record_type : ptr2,
+type_decl Data1: ptr2,
+field_decl val: ptr2,
+integer_cst 32: ptr2,
+type_decl Data1: ptr2,
+integer_cst 64: ptr2,
+field_decl val: ptr2,
+integer_cst 32: ptr2,
+integer_cst 100: ptr2,
+function_decl func2:
+statement_list : ptr1, ptr2,
+if_stmt : ptr1, ptr2,
+truth_andif_expr : ptr1, ptr2,
+ne_expr : ptr1, ptr2,
+parm_decl ptr1: ptr1, ptr2,
+pointer_type : ptr1, ptr2,
+record_type : ptr1, ptr2,
+type_decl Data1: ptr1, ptr2,
+field_decl val: ptr1, ptr2,
+integer_cst 32: ptr1, ptr2,
+type_decl Data1: ptr1, ptr2,
+integer_cst 64: ptr1, ptr2,
+integer_cst 0: ptr1, ptr2,
+eq_expr : ptr2,
+component_ref : ptr2,
+indirect_ref : ptr2,
+parm_decl ptr1: ptr2,
+pointer_type : ptr2,
+record_type : ptr2,
+type_decl Data1: ptr2,
+field_decl val: ptr2,
+integer_cst 32: ptr2,
+type_decl Data1: ptr2,
+integer_cst 64: ptr2,
+field_decl val: ptr2,
+integer_cst 32: ptr2,
+integer_cst 1: ptr2,
+statement_list : ptr1, ptr2,
+cleanup_point_expr : ptr1, ptr2,
+expr_stmt : ptr1, ptr2,
+convert_expr : ptr1, ptr2,
+modify_expr : ptr1, ptr2,
+component_ref : ptr1, ptr2,
+test11.cpp: In member function 'void Object1::func2(Data1*, Data1*)':
+test11.cpp:25:19: warning: Using parameter 'ptr1' without checking for null pointer
+ ptr1->val = 100;
+ ^
+indirect_ref : ptr1, ptr2,
+parm_decl ptr1: ptr1, ptr2,
+pointer_type : ptr1, ptr2,
+record_type : ptr1, ptr2,
+type_decl Data1: ptr1, ptr2,
+field_decl val: ptr1, ptr2,
+integer_cst 32: ptr1, ptr2,
+type_decl Data1: ptr1, ptr2,
+integer_cst 64: ptr1, ptr2,
+field_decl val: ptr1, ptr2,
+integer_cst 32: ptr1, ptr2,
+integer_cst 100: ptr1, ptr2,
+return_expr : ptr1, ptr2,
+cleanup_point_expr : ptr1, ptr2,
+expr_stmt : ptr1, ptr2,
+convert_expr : ptr1, ptr2,
+modify_expr : ptr1, ptr2,
+component_ref : ptr1, ptr2,
+test11.cpp:29:15: warning: Using parameter 'ptr1' without checking for null pointer
+ ptr1->val = 200;
+ ^
+indirect_ref : ptr1, ptr2,
+parm_decl ptr1: ptr1, ptr2,
+pointer_type : ptr1, ptr2,
+record_type : ptr1, ptr2,
+type_decl Data1: ptr1, ptr2,
+field_decl val: ptr1, ptr2,
+integer_cst 32: ptr1, ptr2,
+type_decl Data1: ptr1, ptr2,
+integer_cst 64: ptr1, ptr2,
+field_decl val: ptr1, ptr2,
+integer_cst 32: ptr1, ptr2,
+integer_cst 200: ptr1, ptr2,
diff --git a/test/test11-04.txt b/test/test11-04.txt
new file mode 100644
index 0000000..cd4bfc0
--- /dev/null
+++ b/test/test11-04.txt
@@ -0,0 +1,7 @@
+test11.cpp: In member function 'void Object1::func2(Data1*, Data1*)':
+test11.cpp:25:19: warning: Using parameter 'ptr1' without checking for null pointer
+ ptr1->val = 100;
+ ^
+test11.cpp:29:15: warning: Using parameter 'ptr1' without checking for null pointer
+ ptr1->val = 200;
+ ^
diff --git a/test/test11.cpp b/test/test11.cpp
new file mode 100644
index 0000000..4debb95
--- /dev/null
+++ b/test/test11.cpp
@@ -0,0 +1,31 @@
+class Data1
+{
+ public:
+ int val;
+};
+
+class Object1
+{
+ int k;
+
+ void func1(Data1 *ptr1, Data1 *ptr2)
+ {
+ if (!ptr1 || ptr1->val == 1)
+ {
+ return;
+ }
+
+ ptr1->val = 100;
+ }
+
+ void func2(Data1 *ptr1, Data1 *ptr2)
+ {
+ if (ptr1 && ptr1->val == 1)
+ {
+ ptr1->val = 100;
+ return;
+ }
+
+ ptr1->val = 200;
+ }
+};