diff options
-rw-r--r-- | test/Makefile | 13 | ||||
-rw-r--r-- | test/test8-01.txt | 831 | ||||
-rw-r--r-- | test/test8-02.txt | 7 | ||||
-rw-r--r-- | test/test8-03.txt | 205 | ||||
-rw-r--r-- | test/test8-04.txt | 12 | ||||
-rw-r--r-- | test/test8.cpp | 77 |
6 files changed, 1144 insertions, 1 deletions
diff --git a/test/Makefile b/test/Makefile index 91b3943..d626a6f 100644 --- a/test/Makefile +++ b/test/Makefile @@ -6,7 +6,8 @@ TESTS4 = test4-01 test4-02 test4-03 TESTS5 = test5-01 test5-02 test5-03 test5-04 test5-05 TESTS6 = test6-01 test6-02 test6-03 test6-04 TESTS7 = test7-01 test7-02 test7-03 test7-04 test7-05 -ALLTESTS = test1 test2 test3 test4 test5 test6 test7 ${TESTS1} ${TESTS2} ${TESTS3} ${TESTS4} ${TESTS5} ${TESTS6} ${TESTS7} +TESTS8 = test8-01 test8-02 test8-03 test8-04 +ALLTESTS = test1 test2 test3 test4 test5 test6 test7 test8 ${TESTS1} ${TESTS2} ${TESTS3} ${TESTS4} ${TESTS5} ${TESTS6} ${TESTS7} ${TESTS8} .PHONY: ${ALLTESTS} ${CRASHES} all crashes @@ -85,6 +86,16 @@ test7-04: test7-05: $(call CMD,dumpnullpointers,test7.cpp,test7-05.txt) +test8: ${TESTS8} +test8-01: + $(call CMD,dump,test8.cpp,test8-01.txt) +test8-02: + $(call CMD,findargs,test8.cpp,test8-02.txt) +test8-03: + $(call CMD,dumpnullpointers,test8.cpp,test8-03.txt) +test8-04: + $(call CMD,detectnullpointers,test8.cpp,test8-04.txt) + crashtest1: $(call CMD,dump,crashtest1.h,crashtest1-01.txt) crashtest2: diff --git a/test/test8-01.txt b/test/test8-01.txt new file mode 100644 index 0000000..3e12e2b --- /dev/null +++ b/test/test8-01.txt @@ -0,0 +1,831 @@ +function_decl func1 test8.cpp 5: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 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test8.cpp 6:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test8.cpp 5:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr1 test8.cpp 5:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + statement_list - code + if_stmt test8.cpp 7:9 - statement + eq_expr test8.cpp 7:14 - condition + - isUsed: 1 + parm_decl ptr1 test8.cpp 5:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + 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 test8.cpp 8:13 - then + cleanup_point_expr test8.cpp 10:20 - statement + expr_stmt test8.cpp 10:20 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr1 test8.cpp 5:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 100 - operand +function_decl func2 test8.cpp 13: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 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test8.cpp 14:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + - isUsed: 1 + parm_decl this test8.cpp 13:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr2 test8.cpp 13:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + statement_list - code + if_stmt test8.cpp 15:9 - statement + eq_expr test8.cpp 15:14 - condition + - isUsed: 1 + parm_decl ptr2 test8.cpp 13:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + cleanup_point_expr test8.cpp 17:18 - then + expr_stmt test8.cpp 17:18 - operand + convert_expr - expresssion + modify_expr - operand + component_ref test8.cpp 17:13 - operand + indirect_ref - object + nop_expr - ref + - isUsed: 1 + parm_decl this test8.cpp 13:25 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + integer_cst 0 - operand + cleanup_point_expr test8.cpp 20:20 - statement + expr_stmt test8.cpp 20:20 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr2 test8.cpp 13:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 200 - operand +function_decl func3 test8.cpp 23: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 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test8.cpp 24:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test8.cpp 23:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr3 test8.cpp 23:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + statement_list - code + if_stmt test8.cpp 25:9 - statement + ne_expr - condition + - isUsed: 1 + parm_decl ptr3 test8.cpp 23:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + 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 test8.cpp 26:13 - then + cleanup_point_expr test8.cpp 28:20 - statement + expr_stmt test8.cpp 28:20 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr3 test8.cpp 23:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 300 - operand +function_decl func4 test8.cpp 31: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 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test8.cpp 32:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + - isUsed: 1 + parm_decl this test8.cpp 31:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr4 test8.cpp 31:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + statement_list - code + if_stmt test8.cpp 33:9 - statement + ne_expr - condition + - isUsed: 1 + parm_decl ptr4 test8.cpp 31:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + cleanup_point_expr test8.cpp 34:18 - then + expr_stmt test8.cpp 34:18 - operand + convert_expr - expresssion + modify_expr - operand + component_ref test8.cpp 34:13 - operand + indirect_ref - object + nop_expr - ref + - isUsed: 1 + parm_decl this test8.cpp 31:25 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + integer_cst 0 - operand + return_expr test8.cpp 36:13 - else + cleanup_point_expr test8.cpp 38:20 - statement + expr_stmt test8.cpp 38:20 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr4 test8.cpp 31:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 400 - operand +function_decl func5 test8.cpp 41: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 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test8.cpp 42:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test8.cpp 41:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr5 test8.cpp 41:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + statement_list - code + if_stmt test8.cpp 43:9 - statement + eq_expr test8.cpp 43:14 - condition + - isUsed: 1 + parm_decl ptr5 test8.cpp 41:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + 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 test8.cpp 44:13 - then + cleanup_point_expr test8.cpp 46:24 - else + expr_stmt test8.cpp 46:24 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr5 test8.cpp 41:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 501 - operand + cleanup_point_expr test8.cpp 48:20 - statement + expr_stmt test8.cpp 48:20 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr5 test8.cpp 41:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 500 - operand +function_decl func6 test8.cpp 51: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 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test8.cpp 52:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test8.cpp 51:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr6 test8.cpp 51:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + statement_list - code + if_stmt test8.cpp 53:9 - statement + ne_expr - condition + - isUsed: 1 + parm_decl ptr6 test8.cpp 51:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + if_stmt test8.cpp 55:13 - then + eq_expr test8.cpp 55:18 - condition + - isUsed: 1 + parm_decl ptr6 test8.cpp 51:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + 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 test8.cpp 56:17 - then + cleanup_point_expr test8.cpp 59:20 - statement + expr_stmt test8.cpp 59:20 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr6 test8.cpp 51:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 600 - operand +function_decl func7 test8.cpp 62: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 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test8.cpp 63:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test8.cpp 62:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test8.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test8.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test8.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr7 test8.cpp 62:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + statement_list - code + if_stmt test8.cpp 64:9 - statement + eq_expr test8.cpp 64:14 - condition + - isUsed: 1 + parm_decl ptr7 test8.cpp 62:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + 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 test8.cpp 66:13 - then + statement_list - else + if_stmt test8.cpp 70:13 - statement + eq_expr test8.cpp 70:18 - condition + - isUsed: 1 + parm_decl ptr7 test8.cpp 62:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + 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 test8.cpp 71:17 - then + cleanup_point_expr test8.cpp 72:24 - statement + expr_stmt test8.cpp 72:24 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr7 test8.cpp 62:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 701 - operand + cleanup_point_expr test8.cpp 75:20 - statement + expr_stmt test8.cpp 75:20 - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl ptr7 test8.cpp 62:21 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int <built-in> 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 700 - operand diff --git a/test/test8-02.txt b/test/test8-02.txt new file mode 100644 index 0000000..d04253f --- /dev/null +++ b/test/test8-02.txt @@ -0,0 +1,7 @@ +func1: pointer_type ptr1, +func2: pointer_type ptr2, +func3: pointer_type ptr3, +func4: pointer_type ptr4, +func5: pointer_type ptr5, +func6: pointer_type ptr6, +func7: pointer_type ptr7, diff --git a/test/test8-03.txt b/test/test8-03.txt new file mode 100644 index 0000000..3426b01 --- /dev/null +++ b/test/test8-03.txt @@ -0,0 +1,205 @@ +function_decl func1: +statement_list : ptr1, +if_stmt : ptr1, +return_expr : ptr1, +cleanup_point_expr : ptr1, +expr_stmt : +convert_expr : +modify_expr : +indirect_ref : +parm_decl ptr1: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 100: +function_decl func2: +statement_list : ptr2, +if_stmt : ptr2, +cleanup_point_expr : ptr2, +expr_stmt : ptr2, +convert_expr : ptr2, +modify_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 0: ptr2, +cleanup_point_expr : ptr2, +expr_stmt : ptr2, +convert_expr : ptr2, +modify_expr : ptr2, +test8.cpp: In member function 'void Object1::func2(int*)': +test8.cpp:20:20: warning: Using parameter 'ptr2' without checking for null pointer + *ptr2 = 200; + ^ +indirect_ref : 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 200: ptr2, +function_decl func3: +statement_list : ptr3, +if_stmt : ptr3, +return_expr : +cleanup_point_expr : ptr3, +expr_stmt : ptr3, +convert_expr : ptr3, +modify_expr : ptr3, +test8.cpp: In member function 'void Object1::func3(int*)': +test8.cpp:28:20: warning: Using parameter 'ptr3' without checking for null pointer + *ptr3 = 300; + ^ +indirect_ref : ptr3, +parm_decl ptr3: ptr3, +pointer_type : ptr3, +integer_type : ptr3, +type_decl int: ptr3, +integer_cst 32: ptr3, +integer_cst -2147483648: ptr3, +integer_cst 2147483647: ptr3, +integer_cst 64: ptr3, +integer_cst 300: ptr3, +function_decl func4: +statement_list : ptr4, +if_stmt : ptr4, +cleanup_point_expr : +expr_stmt : +convert_expr : +modify_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: +integer_cst 0: +return_expr : ptr4, +cleanup_point_expr : ptr4, +expr_stmt : +convert_expr : +modify_expr : +indirect_ref : +parm_decl ptr4: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 400: +function_decl func5: +statement_list : ptr5, +if_stmt : ptr5, +return_expr : ptr5, +cleanup_point_expr : +expr_stmt : +convert_expr : +modify_expr : +indirect_ref : +parm_decl ptr5: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 501: +cleanup_point_expr : ptr5, +expr_stmt : +convert_expr : +modify_expr : +indirect_ref : +parm_decl ptr5: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 500: +function_decl func6: +statement_list : ptr6, +if_stmt : ptr6, +if_stmt : +return_expr : +cleanup_point_expr : ptr6, +expr_stmt : ptr6, +convert_expr : ptr6, +modify_expr : ptr6, +test8.cpp: In member function 'void Object1::func6(int*)': +test8.cpp:59:20: warning: Using parameter 'ptr6' without checking for null pointer + *ptr6 = 600; + ^ +indirect_ref : ptr6, +parm_decl ptr6: ptr6, +pointer_type : ptr6, +integer_type : ptr6, +type_decl int: ptr6, +integer_cst 32: ptr6, +integer_cst -2147483648: ptr6, +integer_cst 2147483647: ptr6, +integer_cst 64: ptr6, +integer_cst 600: ptr6, +function_decl func7: +statement_list : ptr7, +if_stmt : ptr7, +return_expr : ptr7, +statement_list : +if_stmt : +return_expr : +cleanup_point_expr : +expr_stmt : +convert_expr : +modify_expr : +indirect_ref : +parm_decl ptr7: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 701: +cleanup_point_expr : ptr7, +expr_stmt : +convert_expr : +modify_expr : +indirect_ref : +parm_decl ptr7: +pointer_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 64: +integer_cst 700: diff --git a/test/test8-04.txt b/test/test8-04.txt new file mode 100644 index 0000000..d4ae038 --- /dev/null +++ b/test/test8-04.txt @@ -0,0 +1,12 @@ +test8.cpp: In member function 'void Object1::func2(int*)': +test8.cpp:20:20: warning: Using parameter 'ptr2' without checking for null pointer + *ptr2 = 200; + ^ +test8.cpp: In member function 'void Object1::func3(int*)': +test8.cpp:28:20: warning: Using parameter 'ptr3' without checking for null pointer + *ptr3 = 300; + ^ +test8.cpp: In member function 'void Object1::func6(int*)': +test8.cpp:59:20: warning: Using parameter 'ptr6' without checking for null pointer + *ptr6 = 600; + ^ diff --git a/test/test8.cpp b/test/test8.cpp new file mode 100644 index 0000000..6b937f1 --- /dev/null +++ b/test/test8.cpp @@ -0,0 +1,77 @@ +class Object1 +{ + int k; + + void func1(int *ptr1) + { + if (!ptr1) + return; + + *ptr1 = 100; + } + + void func2(int *ptr2) + { + if (!ptr2) + { + k = 0; + } + + *ptr2 = 200; + } + + void func3(int *ptr3) + { + if (ptr3) + return; + + *ptr3 = 300; + } + + void func4(int *ptr4) + { + if (ptr4) + k = 0; + else + return; + + *ptr4 = 400; + } + + void func5(int *ptr5) + { + if (!ptr5) + return; + else + *ptr5 = 501; + + *ptr5 = 500; + } + + void func6(int *ptr6) + { + if (ptr6) + { + if (!ptr6) + return; + } + + *ptr6 = 600; + } + + void func7(int *ptr7) + { + if (!ptr7) + { + return; + } + else + { + if (!ptr7) + return; + *ptr7 = 701; + } + + *ptr7 = 700; + } +}; |