diff options
-rw-r--r-- | test/test26-01.txt | 1712 | ||||
-rw-r--r-- | test/test26-02.txt | 23 | ||||
-rw-r--r-- | test/test26-03.txt | 623 | ||||
-rw-r--r-- | test/test26-04.txt | 6 | ||||
-rw-r--r-- | test/test26-05.txt | 6 | ||||
-rw-r--r-- | test/test26.cpp | 42 |
6 files changed, 2391 insertions, 21 deletions
diff --git a/test/test26-01.txt b/test/test26-01.txt index 5a64982..59d4137 100644 --- a/test/test26-01.txt +++ b/test/test26-01.txt @@ -39589,23 +39589,634 @@ function_decl ftest2 test26.cpp 27:16 integer_cst 2147483647 - max value integer_cst 32 - decl size integer_cst 1 - operand -function_decl func1 test26.cpp 37:10 +function_decl Data2 test26.cpp 35:13 +- isVirtual: 1 - 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 test26.cpp 35:7 - type name + type_decl Data2 test26.cpp 33:8 - type name - isAutogenerated: 1 - type_decl Object1 test26.cpp 36:1 - field + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + tree_list - chain + integer_type - value + - 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 test26.cpp 36:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 35:20 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + parm_decl __in_chrg test26.cpp 35:20 - argument + - isAutogenerated: 1 + integer_type - decl 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 32 - parm size + must_not_throw_expr test26.cpp 35:13 - code + statement_list - operand + bind_expr test26.cpp 37:5 - statement + statement_list - operand + cleanup_point_expr test26.cpp 36:5 - statement + expr_stmt test26.cpp 36:5 - operand + convert_expr - expresssion + modify_expr - operand + component_ref - operand + indirect_ref - object + nop_expr - ref + parm_decl this test26.cpp 35:20 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + pointer_plus_expr - operand + addr_expr - operand + var_decl _ZTV5Data2 test26.cpp 33:8 - operand + - isUsed: 1 + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 256 - decl size + constructor - initial + array_type - constructor type + pointer_type - element type + type_decl __vtbl_ptr_type <built-in> 0:0 - type name + - isAutogenerated: 1 + function_type - nested type + integer_type - function return 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_type - domain + - precisionBits: 64 + - signed + integer_cst 64 - type size + integer_cst 0 - min value + integer_cst 3 - max value + nop_expr - value + integer_cst 0 - operand + nop_expr - value + addr_expr - operand + var_decl _ZTI5Data2 test26.cpp 33:8 - operand + - isAutogenerated: 1 + integer_cst 128 - decl size + record_type - var type + type_decl __class_type_info_pseudo <built-in> 0:0 - type name + field_decl <built-in> 0:0 - field + - signed + integer_cst 128 - decl size + nop_expr - value + addr_expr - operand + function_decl __comp_dtor test26.cpp 35:13 - operand + - isVirtual: 1 + - isExternal: 1 + - isPublic: 1 + method_type - function type + nop_expr - value + addr_expr - operand + function_decl __deleting_dtor test26.cpp 35:13 - operand + - isVirtual: 1 + - isExternal: 1 + - isPublic: 1 + method_type - function type + array_type - var type + pointer_type - element type + type_decl __vtbl_ptr_type <built-in> 0:0 - type name + - isAutogenerated: 1 + function_type - nested type + integer_type - function return 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_type - domain + - precisionBits: 64 + - signed + integer_cst 64 - type size + integer_cst 0 - min value + integer_cst 3 - max value + integer_cst 16 - operand + cleanup_stmt test26.cpp 36:5 - statement + statement_list - body + modify_expr - expresssion + indirect_ref - operand + nop_expr - ref + parm_decl this test26.cpp 35:20 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + constructor - operand + record_type - constructor type + field_decl _vptr.Data2 test26.cpp 33:8 - field + - signed + integer_cst 64 - decl size + block - operand + label_expr test26.cpp 37:5 - statement + label_decl test26.cpp 36:5 - operand + - isAutogenerated: 1 + if_stmt test26.cpp 37:5 - statement + ne_expr - condition + bit_and_expr - operand + parm_decl __in_chrg test26.cpp 35:20 - operand + - isAutogenerated: 1 + integer_type - decl 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 32 - parm size + integer_cst 1 - operand + integer_cst 0 - operand + cleanup_point_expr test26.cpp 37:5 - then + expr_stmt test26.cpp 37:5 - operand + call_expr test26.cpp 37:5 - expresssion + addr_expr - function + function_decl operator delete /usr/include/c++/5/new 115:6 - operand + - isExternal: 1 + - isPublic: 1 + tree_list - attribute + identifier_node __externally_visible__ - purpose + function_type - function type + nop_expr - arg + parm_decl this test26.cpp 35:20 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size +function_decl __base_dtor test26.cpp 35:13 +- 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 Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.cpp 37:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 35:20 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + must_not_throw_expr test26.cpp 35:13 - code + statement_list - operand + bind_expr test26.cpp 37:5 - statement + statement_list - operand + cleanup_point_expr test26.cpp 36:5 - statement + expr_stmt test26.cpp 36:5 - operand + convert_expr - expresssion + modify_expr - operand + component_ref - operand + indirect_ref - object + nop_expr - ref + parm_decl this test26.cpp 35:20 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + pointer_plus_expr - operand + addr_expr - operand + var_decl _ZTV5Data2 test26.cpp 33:8 - operand + - isUsed: 1 + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 256 - decl size + constructor - initial + array_type - constructor type + pointer_type - element type + type_decl __vtbl_ptr_type <built-in> 0:0 - type name + - isAutogenerated: 1 + function_type - nested type + integer_type - function return 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_type - domain + - precisionBits: 64 + - signed + integer_cst 64 - type size + integer_cst 0 - min value + integer_cst 3 - max value + nop_expr - value + integer_cst 0 - operand + nop_expr - value + addr_expr - operand + var_decl _ZTI5Data2 test26.cpp 33:8 - operand + - isAutogenerated: 1 + integer_cst 128 - decl size + record_type - var type + type_decl __class_type_info_pseudo <built-in> 0:0 - type name + field_decl <built-in> 0:0 - field + - signed + integer_cst 128 - decl size + nop_expr - value + addr_expr - operand + function_decl __comp_dtor test26.cpp 35:13 - operand + - isVirtual: 1 + - isExternal: 1 + - isPublic: 1 + method_type - function type + nop_expr - value + addr_expr - operand + function_decl __deleting_dtor test26.cpp 35:13 - operand + - isVirtual: 1 + - isExternal: 1 + - isPublic: 1 + method_type - function type + array_type - var type + pointer_type - element type + type_decl __vtbl_ptr_type <built-in> 0:0 - type name + - isAutogenerated: 1 + function_type - nested type + integer_type - function return 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_type - domain + - precisionBits: 64 + - signed + integer_cst 64 - type size + integer_cst 0 - min value + integer_cst 3 - max value + integer_cst 16 - operand + try_finally test26.cpp 36:5 - statement + statement_list - operand + modify_expr - operand + indirect_ref - operand + nop_expr - ref + parm_decl this test26.cpp 35:20 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + constructor - operand + record_type - constructor type + field_decl _vptr.Data2 test26.cpp 33:8 - field + - signed + integer_cst 64 - decl size + block - operand + label_expr test26.cpp 37:5 - statement + label_decl test26.cpp 36:5 - operand + - isAutogenerated: 1 + cond_expr test26.cpp 37:5 - statement + ne_expr - operand + bit_and_expr - operand + integer_cst 0 - operand + integer_cst 1 - operand + integer_cst 0 - operand + cleanup_point_expr test26.cpp 37:5 - operand + expr_stmt test26.cpp 37:5 - operand + call_expr test26.cpp 37:5 - expresssion + addr_expr - function + function_decl operator delete /usr/include/c++/5/new 115:6 - operand + - isExternal: 1 + - isPublic: 1 + tree_list - attribute + identifier_node __externally_visible__ - purpose + function_type - function type + nop_expr - arg + parm_decl this test26.cpp 35:20 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + nop_expr test26.cpp 37:5 - operand + integer_cst 0 - operand +function_decl __comp_dtor test26.cpp 35:13 +- isVirtual: 1 +- 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 Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.cpp 37:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 35:20 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code +function_decl __deleting_dtor test26.cpp 35:13 +- isVirtual: 1 +- 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 Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field - isAutogenerated: 1 tree_list - arg types pointer_type - value record_type - nested type - type_decl Object1 test26.cpp 35:7 - type name + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 - isAutogenerated: 1 - type_decl Object1 test26.cpp 36:1 - field + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.cpp 37:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 35:20 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + call_expr test26.cpp 37:5 - statement + addr_expr - function + function_decl __comp_dtor test26.cpp 35:13 - operand + - isVirtual: 1 + - isPublic: 1 + method_type - function type + parm_decl this test26.cpp 35:20 - arg + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + label_expr - statement + label_decl test26.cpp 37:5 - operand + - isAutogenerated: 1 + call_expr test26.cpp 37:5 - statement + addr_expr - function + function_decl operator delete /usr/include/c++/5/new 115:6 - operand + - isExternal: 1 + - isPublic: 1 + tree_list - attribute + identifier_node __externally_visible__ - purpose + function_type - function type + nop_expr - arg + parm_decl this test26.cpp 35:20 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size +function_decl func1 test26.cpp 44: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 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field - isAutogenerated: 1 tree_list - chain pointer_type - value @@ -39630,22 +40241,22 @@ function_decl func1 test26.cpp 37:10 void_type - value type_decl void <built-in> 0:0 - type name - isAutogenerated: 1 - result_decl test26.cpp 38:5 - function result + result_decl test26.cpp 45:5 - function result - isAutogenerated: 1 void_type - result type type_decl void <built-in> 0:0 - type name - isAutogenerated: 1 - parm_decl this test26.cpp 37:33 - argument + parm_decl this test26.cpp 44:33 - argument - isAutogenerated: 1 pointer_type - decl type record_type - nested type - type_decl Object1 test26.cpp 35:7 - type name + type_decl Object1 test26.cpp 42:7 - type name - isAutogenerated: 1 - type_decl Object1 test26.cpp 36:1 - field + type_decl Object1 test26.cpp 43:1 - field - isAutogenerated: 1 integer_cst 64 - parm size - isUsed: 1 - parm_decl ptr1 test26.cpp 37:29 - argument + parm_decl ptr1 test26.cpp 44:29 - argument pointer_type - decl type record_type - nested type type_decl Data1 test26.cpp 6:8 - type name @@ -39665,11 +40276,11 @@ function_decl func1 test26.cpp 37:10 type_decl Data1 test26.cpp 7:1 - field - isAutogenerated: 1 integer_cst 64 - parm size - if_stmt test26.cpp 39:9 - code + if_stmt test26.cpp 46:9 - code ne_expr - condition nop_expr - operand - isUsed: 1 - parm_decl ptr1 test26.cpp 37:29 - operand + parm_decl ptr1 test26.cpp 44:29 - operand pointer_type - decl type record_type - nested type type_decl Data1 test26.cpp 6:8 - type name @@ -39690,12 +40301,12 @@ function_decl func1 test26.cpp 37:10 - isAutogenerated: 1 integer_cst 64 - parm size integer_cst 0 - operand - if_stmt test26.cpp 41:13 - then - truth_andif_expr test26.cpp 41:22 - condition + if_stmt test26.cpp 48:13 - then + truth_andif_expr test26.cpp 48:22 - condition ne_expr - operand nop_expr - operand - isUsed: 1 - parm_decl ptr1 test26.cpp 37:29 - operand + parm_decl ptr1 test26.cpp 44:29 - operand pointer_type - decl type record_type - nested type type_decl Data1 test26.cpp 6:8 - type name @@ -39716,8 +40327,8 @@ function_decl func1 test26.cpp 37:10 - isAutogenerated: 1 integer_cst 64 - parm size integer_cst 0 - operand - eq_expr test26.cpp 41:27 - operand - var_decl k test26.cpp 33:5 - operand + eq_expr test26.cpp 48:27 - operand + var_decl k test26.cpp 40:5 - operand - isUsed: 1 integer_cst 32 - decl size integer_type - var type @@ -39729,7 +40340,1072 @@ function_decl func1 test26.cpp 37:10 integer_cst -2147483648 - min value integer_cst 2147483647 - max value integer_cst 1 - operand - return_expr test26.cpp 42:17 - then + return_expr test26.cpp 49:17 - then +function_decl func2 test26.cpp 53: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 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.cpp 54:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 53:33 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr1 test26.cpp 53:29 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + if_stmt test26.cpp 55:9 - code + eq_expr test26.cpp 55:14 - condition + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 53:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + if_stmt test26.cpp 57:13 - then + truth_andif_expr test26.cpp 57:23 - condition + eq_expr test26.cpp 57:18 - operand + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 53:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + eq_expr test26.cpp 57:28 - operand + var_decl k test26.cpp 40:5 - operand + - isUsed: 1 + integer_cst 32 - decl size + integer_type - var 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 1 - operand + return_expr test26.cpp 58:17 - then +function_decl Data1 test26.cpp 6:8 +- isAutogenerated: 1 +- 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 Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - chain + integer_type - value + - 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 test26.cpp 6:8 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 68:16 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + parm_decl __in_chrg test26.cpp 68:16 - argument + - isAutogenerated: 1 + integer_type - decl 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 32 - parm size + statement_list - code + bind_expr test26.cpp 6:8 - statement + cleanup_stmt test26.cpp 6:8 - operand + statement_list - body + cleanup_stmt test26.cpp 6:8 - statement + statement_list - body + call_expr test26.cpp 6:8 - expresssion + addr_expr - function + function_decl __comp_dtor /usr/include/c++/5/bits/basic_string.h 2942:7 - operand + - isExternal: 1 + - isPublic: 1 + method_type - function type + addr_expr - arg + component_ref test26.cpp 6:8 - operand + indirect_ref - object + nop_expr - ref + parm_decl this test26.cpp 68:16 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + modify_expr - expresssion + indirect_ref - operand + nop_expr - ref + parm_decl this test26.cpp 68:16 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + constructor - operand + record_type - constructor type + field_decl val test26.cpp 6:8 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 6:8 - field + - signed + integer_cst 64 - decl size + field_decl arr test26.cpp 6:8 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 6:8 - field + - signed + integer_cst 64 - decl size + block - operand + label_expr test26.cpp 6:8 - statement + label_decl test26.cpp 6:8 - operand + - isAutogenerated: 1 +function_decl __base_dtor test26.cpp 6:8 +- isAutogenerated: 1 +- 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 Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.cpp 6:8 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 68:16 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + bind_expr test26.cpp 6:8 - statement + try_finally test26.cpp 6:8 - operand + statement_list - operand + try_finally test26.cpp 6:8 - statement + statement_list - operand + call_expr test26.cpp 6:8 - operand + addr_expr - function + function_decl __comp_dtor /usr/include/c++/5/bits/basic_string.h 2942:7 - operand + - isExternal: 1 + - isPublic: 1 + method_type - function type + addr_expr - arg + component_ref test26.cpp 6:8 - operand + indirect_ref - object + nop_expr - ref + parm_decl this test26.cpp 68:16 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + modify_expr - operand + indirect_ref - operand + nop_expr - ref + parm_decl this test26.cpp 68:16 - operand + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + constructor - operand + record_type - constructor type + field_decl val test26.cpp 6:8 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 6:8 - field + - signed + integer_cst 64 - decl size + field_decl arr test26.cpp 6:8 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 6:8 - field + - signed + integer_cst 64 - decl size + block - operand + label_expr test26.cpp 6:8 - statement + label_decl test26.cpp 6:8 - operand + - isAutogenerated: 1 +function_decl __comp_dtor test26.cpp 6:8 +- isAutogenerated: 1 +- 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 Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.cpp 6:8 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 68:16 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code +function_decl func3 test26.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 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.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 test26.cpp 62:33 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr1 test26.cpp 62:29 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + if_stmt test26.cpp 64:9 - statement + eq_expr test26.cpp 64:14 - condition + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 62:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + return_expr test26.cpp 66:13 - then + cleanup_point_expr test26.cpp 68:20 - statement + expr_stmt test26.cpp 68:20 - operand + cond_expr - expresssion + ne_expr - operand + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 62:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + compound_expr - operand + call_expr test26.cpp 68:16 - operand + addr_expr - function + function_decl __comp_dtor test26.cpp 6:8 - operand + - isAutogenerated: 1 + - isPublic: 1 + method_type - function type + nop_expr - arg + - isUsed: 1 + parm_decl ptr1 test26.cpp 62:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + call_expr test26.cpp 68:16 - operand + addr_expr - function + function_decl operator delete /usr/include/c++/5/new 115:6 - operand + - isExternal: 1 + - isPublic: 1 + tree_list - attribute + identifier_node __externally_visible__ - purpose + function_type - function type + nop_expr - arg + - isUsed: 1 + parm_decl ptr1 test26.cpp 62:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + void_cst - operand +function_decl func4 test26.cpp 71: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 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.cpp 72:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + parm_decl this test26.cpp 71:33 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test26.cpp 42:7 - type name + - isAutogenerated: 1 + type_decl Object1 test26.cpp 43:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr1 test26.cpp 71:29 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + if_stmt test26.cpp 73:9 - statement + ne_expr - condition + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 71:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + return_expr test26.cpp 75:13 - then + cleanup_point_expr test26.cpp 77:20 - statement + expr_stmt test26.cpp 77:20 - operand + cond_expr - expresssion + ne_expr - operand + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 71:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + compound_expr - operand + call_expr test26.cpp 77:16 - operand + addr_expr - function + function_decl __comp_dtor test26.cpp 6:8 - operand + - isAutogenerated: 1 + - isPublic: 1 + method_type - function type + nop_expr - arg + - isUsed: 1 + parm_decl ptr1 test26.cpp 71:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + call_expr test26.cpp 77:16 - operand + addr_expr - function + function_decl operator delete /usr/include/c++/5/new 115:6 - operand + - isExternal: 1 + - isPublic: 1 + tree_list - attribute + identifier_node __externally_visible__ - purpose + function_type - function type + nop_expr - arg + - isUsed: 1 + parm_decl ptr1 test26.cpp 71:29 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test26.cpp 6:8 - type name + - isAutogenerated: 1 + field_decl val test26.cpp 17:9 - field + - signed + integer_cst 32 - decl size + field_decl ptrval test26.cpp 18:12 - field + - unsigned + integer_cst 64 - decl size + field_decl arr test26.cpp 19:14 - field + - signed + integer_cst 96 - decl size + field_decl str1 test26.cpp 20:17 - field + - signed + integer_cst 64 - decl size + type_decl Data1 test26.cpp 7:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + void_cst - operand +function_decl func5 test26.cpp 80:17 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + result_decl test26.cpp 81:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void <built-in> 0:0 - type name + - isAutogenerated: 1 + - isUsed: 1 + parm_decl ptr1 test26.cpp 80:36 - argument + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + if_stmt test26.cpp 82:9 - statement + eq_expr test26.cpp 82:14 - condition + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 80:36 - operand + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + return_expr test26.cpp 83:13 - then + cleanup_point_expr test26.cpp 85:20 - statement + expr_stmt test26.cpp 85:20 - operand + cond_expr - expresssion + ne_expr - operand + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 80:36 - operand + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + call_expr test26.cpp 85:16 - operand + obj_type_ref - function + indirect_ref test26.cpp 85:16 - operand + pointer_plus_expr test26.cpp 85:16 - ref + component_ref - operand + indirect_ref - object + nop_expr - ref + - isUsed: 1 + parm_decl ptr1 test26.cpp 80:36 - operand + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + integer_cst 8 - operand + nop_expr - operand + - isUsed: 1 + parm_decl ptr1 test26.cpp 80:36 - operand + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 1 - operand + nop_expr - arg + - isUsed: 1 + parm_decl ptr1 test26.cpp 80:36 - operand + pointer_type - decl type + record_type - nested type + type_decl Data2 test26.cpp 33:8 - type name + - isAutogenerated: 1 + field_decl _vptr.Data2 test26.cpp 33:8 - field + - unsigned + - isVirtual: 1 + - isAutogenerated: 1 + integer_cst 64 - decl size + type_decl Data2 test26.cpp 34:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + void_cst - operand function_decl c_str /usr/include/c++/5/bits/basic_string.h 4215:7 - isExternal: 1 - isPublic: 1 diff --git a/test/test26-02.txt b/test/test26-02.txt index 14ae93e..53ff2f8 100644 --- a/test/test26-02.txt +++ b/test/test26-02.txt @@ -287,7 +287,30 @@ __base_ctor : pointer_type ptr0, __comp_ctor : pointer_type ptr0, ftest1: ftest2: pointer_type ptr0, +Data2: +__base_dtor : +__comp_dtor : +__deleting_dtor : func1: pointer_type ptr1, +func2: pointer_type ptr1, +Data1: +__base_dtor : +__comp_dtor : +func3: pointer_type ptr1, +test26.cpp: In member function 'void Object1::func3(Data1*)': +test26.cpp:68:16: warning: Using parameter 'ptr1' without checking for null pointer + delete ptr1; + ^ +func4: pointer_type ptr1, +test26.cpp: In member function 'void Object1::func4(Data1*)': +test26.cpp:77:16: warning: Using parameter 'ptr1' without checking for null pointer + delete ptr1; + ^ +func5: pointer_type ptr1, +test26.cpp: In static member function 'static void Object1::func5(Data2*)': +test26.cpp:85:16: warning: Using parameter 'ptr1' without checking for null pointer + delete ptr1; + ^ __stoa: pointer_type __convf, pointer_type __name, pointer_type __str, pointer_type __idx, __stoa: pointer_type __convf, pointer_type __name, pointer_type __str, pointer_type __idx, __stoa: pointer_type __convf, pointer_type __name, pointer_type __str, pointer_type __idx, diff --git a/test/test26-03.txt b/test/test26-03.txt index dd8d127..5b63f48 100644 --- a/test/test26-03.txt +++ b/test/test26-03.txt @@ -13023,6 +13023,247 @@ integer_cst -2147483648: ptr0, integer_cst 2147483647: ptr0, integer_cst 32: ptr0, integer_cst 1: ptr0, +function_decl Data2: +must_not_throw_expr : +statement_list : +bind_expr : +statement_list : +cleanup_point_expr : +expr_stmt : +convert_expr : +modify_expr : +component_ref : +indirect_ref : +parm_decl this: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +field_decl _vptr.Data2: +integer_cst 64: +pointer_plus_expr : +addr_expr : +var_decl _ZTV5Data2: +integer_cst 256: +constructor : +array_type : +pointer_type : +type_decl __vtbl_ptr_type: +function_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_type : +integer_cst 64: +integer_cst 0: +integer_cst 3: +integer_cst 0: +addr_expr : +var_decl _ZTI5Data2: +integer_cst 128: +record_type : +type_decl __class_type_info_pseudo: +field_decl : +integer_cst 128: +addr_expr : +function_decl __comp_dtor : +addr_expr : +function_decl __deleting_dtor : +array_type : +pointer_type : +type_decl __vtbl_ptr_type: +function_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_type : +integer_cst 64: +integer_cst 0: +integer_cst 3: +integer_cst 16: +cleanup_stmt : +statement_list : +modify_expr : +indirect_ref : +parm_decl this: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +constructor : +record_type : +field_decl _vptr.Data2: +integer_cst 64: +block : +label_expr : +label_decl : +if_stmt : +ne_expr : +bit_and_expr : +parm_decl __in_chrg: +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_cst 32: +integer_cst 1: +integer_cst 0: +cleanup_point_expr : +expr_stmt : +call_expr : +addr_expr : +function_decl operator delete: +parm_decl this: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +function_decl __base_dtor : +must_not_throw_expr : +statement_list : +bind_expr : +statement_list : +cleanup_point_expr : +expr_stmt : +convert_expr : +modify_expr : +component_ref : +indirect_ref : +parm_decl this: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +field_decl _vptr.Data2: +integer_cst 64: +pointer_plus_expr : +addr_expr : +var_decl _ZTV5Data2: +integer_cst 256: +constructor : +array_type : +pointer_type : +type_decl __vtbl_ptr_type: +function_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_type : +integer_cst 64: +integer_cst 0: +integer_cst 3: +integer_cst 0: +addr_expr : +var_decl _ZTI5Data2: +integer_cst 128: +record_type : +type_decl __class_type_info_pseudo: +field_decl : +integer_cst 128: +addr_expr : +function_decl __comp_dtor : +addr_expr : +function_decl __deleting_dtor : +array_type : +pointer_type : +type_decl __vtbl_ptr_type: +function_type : +integer_type : +type_decl int: +integer_cst 32: +integer_cst -2147483648: +integer_cst 2147483647: +integer_type : +integer_cst 64: +integer_cst 0: +integer_cst 3: +integer_cst 16: +try_finally : +statement_list : +modify_expr : +indirect_ref : +parm_decl this: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +constructor : +record_type : +field_decl _vptr.Data2: +integer_cst 64: +block : +label_expr : +label_decl : +cond_expr : +ne_expr : +bit_and_expr : +integer_cst 0: +integer_cst 1: +integer_cst 0: +cleanup_point_expr : +expr_stmt : +call_expr : +addr_expr : +function_decl operator delete: +parm_decl this: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +integer_cst 0: +function_decl __comp_dtor : +statement_list : +function_decl __deleting_dtor : +statement_list : +call_expr : +addr_expr : +function_decl __comp_dtor : +parm_decl this: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +label_expr : +label_decl : +call_expr : +addr_expr : +function_decl operator delete: +parm_decl this: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: function_decl func1: if_stmt : ptr1, ne_expr : ptr1, @@ -13045,7 +13286,7 @@ if_stmt : truth_andif_expr : ne_expr : test26.cpp: In member function 'void Object1::func1(Data1*)': -test26.cpp:41:22: warning: Useless variable check 'ptr1'. It already was checked before +test26.cpp:48:22: warning: Useless variable check 'ptr1'. It already was checked before if (ptr1 && k == 1) ^ parm_decl ptr1: @@ -13073,6 +13314,386 @@ integer_cst -2147483648: integer_cst 2147483647: integer_cst 1: return_expr : +function_decl func2: +if_stmt : ptr1, +eq_expr : ptr1, +parm_decl ptr1: ptr1, +pointer_type : ptr1, +record_type : ptr1, +type_decl Data1: ptr1, +field_decl val: ptr1, +integer_cst 32: ptr1, +field_decl ptrval: ptr1, +integer_cst 64: ptr1, +field_decl arr: ptr1, +integer_cst 96: ptr1, +field_decl str1: ptr1, +integer_cst 64: ptr1, +type_decl Data1: ptr1, +integer_cst 64: ptr1, +integer_cst 0: ptr1, +if_stmt : ptr1, +truth_andif_expr : ptr1, +eq_expr : ptr1, +test26.cpp: In member function 'void Object1::func2(Data1*)': +test26.cpp:57:18: warning: Useless variable check 'ptr1'. It already was checked before + if (!ptr1 && k == 1) + ^ +parm_decl ptr1: ptr1, +pointer_type : ptr1, +record_type : ptr1, +type_decl Data1: ptr1, +field_decl val: ptr1, +integer_cst 32: ptr1, +field_decl ptrval: ptr1, +integer_cst 64: ptr1, +field_decl arr: ptr1, +integer_cst 96: ptr1, +field_decl str1: ptr1, +integer_cst 64: ptr1, +type_decl Data1: ptr1, +integer_cst 64: ptr1, +integer_cst 0: ptr1, +eq_expr : ptr1, +var_decl k: ptr1, +integer_cst 32: ptr1, +integer_type : ptr1, +type_decl int: ptr1, +integer_cst 32: ptr1, +integer_cst -2147483648: ptr1, +integer_cst 2147483647: ptr1, +integer_cst 1: ptr1, +return_expr : ptr1, +function_decl Data1: +statement_list : +bind_expr : +cleanup_stmt : +statement_list : +cleanup_stmt : +statement_list : +call_expr : +addr_expr : +function_decl __comp_dtor : +addr_expr : +component_ref : +indirect_ref : +parm_decl this: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +field_decl str1: +integer_cst 64: +modify_expr : +indirect_ref : +parm_decl this: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +constructor : +record_type : +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +block : +label_expr : +label_decl : +function_decl __base_dtor : +statement_list : +bind_expr : +try_finally : +statement_list : +try_finally : +statement_list : +call_expr : +addr_expr : +function_decl __comp_dtor : +addr_expr : +component_ref : +indirect_ref : +parm_decl this: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +field_decl str1: +integer_cst 64: +modify_expr : +indirect_ref : +parm_decl this: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +constructor : +record_type : +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +block : +label_expr : +label_decl : +function_decl __comp_dtor : +statement_list : +function_decl func3: +statement_list : ptr1, +if_stmt : ptr1, +eq_expr : ptr1, +parm_decl ptr1: ptr1, +pointer_type : ptr1, +record_type : ptr1, +type_decl Data1: ptr1, +field_decl val: ptr1, +integer_cst 32: ptr1, +field_decl ptrval: ptr1, +integer_cst 64: ptr1, +field_decl arr: ptr1, +integer_cst 96: ptr1, +field_decl str1: ptr1, +integer_cst 64: ptr1, +type_decl Data1: ptr1, +integer_cst 64: ptr1, +integer_cst 0: ptr1, +return_expr : ptr1, +cleanup_point_expr : ptr1, +expr_stmt : +cond_expr : +ne_expr : +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +integer_cst 0: +compound_expr : +call_expr : +addr_expr : +function_decl __comp_dtor : +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +call_expr : +addr_expr : +function_decl operator delete: +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +void_cst : +function_decl func4: +statement_list : ptr1, +if_stmt : ptr1, +ne_expr : ptr1, +parm_decl ptr1: ptr1, +pointer_type : ptr1, +record_type : ptr1, +type_decl Data1: ptr1, +field_decl val: ptr1, +integer_cst 32: ptr1, +field_decl ptrval: ptr1, +integer_cst 64: ptr1, +field_decl arr: ptr1, +integer_cst 96: ptr1, +field_decl str1: ptr1, +integer_cst 64: ptr1, +type_decl Data1: ptr1, +integer_cst 64: ptr1, +integer_cst 0: ptr1, +return_expr : +cleanup_point_expr : ptr1, +expr_stmt : ptr1, +cond_expr : ptr1, +ne_expr : ptr1, +parm_decl ptr1: ptr1, +pointer_type : ptr1, +record_type : ptr1, +type_decl Data1: ptr1, +field_decl val: ptr1, +integer_cst 32: ptr1, +field_decl ptrval: ptr1, +integer_cst 64: ptr1, +field_decl arr: ptr1, +integer_cst 96: ptr1, +field_decl str1: ptr1, +integer_cst 64: ptr1, +type_decl Data1: ptr1, +integer_cst 64: ptr1, +integer_cst 0: ptr1, +compound_expr : +call_expr : +addr_expr : +function_decl __comp_dtor : +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +call_expr : +addr_expr : +function_decl operator delete: +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +field_decl ptrval: +integer_cst 64: +field_decl arr: +integer_cst 96: +field_decl str1: +integer_cst 64: +type_decl Data1: +integer_cst 64: +void_cst : ptr1, +function_decl func5: +statement_list : ptr1, +if_stmt : ptr1, +eq_expr : ptr1, +parm_decl ptr1: ptr1, +pointer_type : ptr1, +record_type : ptr1, +type_decl Data2: ptr1, +field_decl _vptr.Data2: ptr1, +integer_cst 64: ptr1, +type_decl Data2: ptr1, +integer_cst 64: ptr1, +integer_cst 0: ptr1, +return_expr : ptr1, +cleanup_point_expr : ptr1, +expr_stmt : +cond_expr : +ne_expr : +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +integer_cst 0: +call_expr : +obj_type_ref : +indirect_ref : +pointer_plus_expr : +component_ref : +indirect_ref : +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +field_decl _vptr.Data2: +integer_cst 64: +integer_cst 8: +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +integer_cst 1: +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data2: +field_decl _vptr.Data2: +integer_cst 64: +type_decl Data2: +integer_cst 64: +void_cst : function_decl c_str: function_decl __stoa: bind_expr : __convf, __idx, __name, __str, diff --git a/test/test26-04.txt b/test/test26-04.txt index 32fe1ab..f0226d8 100644 --- a/test/test26-04.txt +++ b/test/test26-04.txt @@ -1,4 +1,8 @@ test26.cpp: In member function 'void Object1::func1(Data1*)': -test26.cpp:41:22: warning: Useless variable check 'ptr1'. It already was checked before +test26.cpp:48:22: warning: Useless variable check 'ptr1'. It already was checked before if (ptr1 && k == 1) ^ +test26.cpp: In member function 'void Object1::func2(Data1*)': +test26.cpp:57:18: warning: Useless variable check 'ptr1'. It already was checked before + if (!ptr1 && k == 1) + ^ diff --git a/test/test26-05.txt b/test/test26-05.txt index 32fe1ab..f0226d8 100644 --- a/test/test26-05.txt +++ b/test/test26-05.txt @@ -1,4 +1,8 @@ test26.cpp: In member function 'void Object1::func1(Data1*)': -test26.cpp:41:22: warning: Useless variable check 'ptr1'. It already was checked before +test26.cpp:48:22: warning: Useless variable check 'ptr1'. It already was checked before if (ptr1 && k == 1) ^ +test26.cpp: In member function 'void Object1::func2(Data1*)': +test26.cpp:57:18: warning: Useless variable check 'ptr1'. It already was checked before + if (!ptr1 && k == 1) + ^ diff --git a/test/test26.cpp b/test/test26.cpp index baca5d9..929a85a 100644 --- a/test/test26.cpp +++ b/test/test26.cpp @@ -30,6 +30,13 @@ struct Data1 } }; +struct Data2 +{ + virtual ~Data2() + { + } +}; + int k; class Object1 @@ -42,4 +49,39 @@ class Object1 return; } } + + void func2(Data1 *const ptr1) + { + if (!ptr1) + { + if (!ptr1 && k == 1) + return; + } + } + + void func3(Data1 *const ptr1) + { + if (!ptr1) + { + return; + } + delete ptr1; + } + + void func4(Data1 *const ptr1) + { + if (ptr1) + { + return; + } + delete ptr1; + } + + static void func5(Data2 *const ptr1) + { + if (!ptr1) + return; + + delete ptr1; + } }; |