From f9297a22459a24b6909d89bd5491f9e76062b82a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 20 Jun 2015 21:08:33 +0300 Subject: Update test 11. Update test results. --- test/test09-03.txt | 20 +- test/test10-03.txt | 110 ++++----- test/test11-01.txt | 712 ++++++++++++++++++++++++++++++++++++++++++++++++++++- test/test11-02.txt | 4 + test/test11-03.txt | 301 +++++++++++++++++++++- test/test11-04.txt | 23 +- test/test11.cpp | 50 +++- 7 files changed, 1141 insertions(+), 79 deletions(-) diff --git a/test/test09-03.txt b/test/test09-03.txt index b336ee1..8005cd5 100644 --- a/test/test09-03.txt +++ b/test/test09-03.txt @@ -548,16 +548,16 @@ integer_cst -2147483648: ptr1, ptr2, integer_cst 2147483647: ptr1, ptr2, integer_cst 64: ptr1, ptr2, integer_cst 0: ptr1, ptr2, -ne_expr : ptr1, ptr2, -parm_decl ptr2: ptr1, ptr2, -pointer_type : ptr1, ptr2, -integer_type : ptr1, ptr2, -type_decl int: ptr1, ptr2, -integer_cst 32: ptr1, ptr2, -integer_cst -2147483648: ptr1, ptr2, -integer_cst 2147483647: ptr1, ptr2, -integer_cst 64: ptr1, ptr2, -integer_cst 0: ptr1, ptr2, +ne_expr : ptr2, +parm_decl ptr2: ptr2, +pointer_type : ptr2, +integer_type : ptr2, +type_decl int: ptr2, +integer_cst 32: ptr2, +integer_cst -2147483648: ptr2, +integer_cst 2147483647: ptr2, +integer_cst 64: ptr2, +integer_cst 0: ptr2, return_expr : cleanup_point_expr : ptr1, ptr2, expr_stmt : ptr1, ptr2, diff --git a/test/test10-03.txt b/test/test10-03.txt index 9d1bf9d..f64aeec 100644 --- a/test/test10-03.txt +++ b/test/test10-03.txt @@ -490,16 +490,16 @@ integer_cst -2147483648: ptr1, ptr2, integer_cst 2147483647: ptr1, ptr2, integer_cst 64: ptr1, ptr2, integer_cst 0: ptr1, ptr2, -ne_expr : ptr1, ptr2, -parm_decl ptr2: ptr1, ptr2, -pointer_type : ptr1, ptr2, -integer_type : ptr1, ptr2, -type_decl int: ptr1, ptr2, -integer_cst 32: ptr1, ptr2, -integer_cst -2147483648: ptr1, ptr2, -integer_cst 2147483647: ptr1, ptr2, -integer_cst 64: ptr1, ptr2, -integer_cst 0: ptr1, ptr2, +ne_expr : ptr2, +parm_decl ptr2: ptr2, +pointer_type : ptr2, +integer_type : ptr2, +type_decl int: ptr2, +integer_cst 32: ptr2, +integer_cst -2147483648: ptr2, +integer_cst 2147483647: ptr2, +integer_cst 64: ptr2, +integer_cst 0: ptr2, statement_list : cleanup_point_expr : expr_stmt : @@ -667,16 +667,16 @@ integer_cst -2147483648: ptr1, ptr2, integer_cst 2147483647: ptr1, ptr2, integer_cst 64: ptr1, ptr2, integer_cst 0: ptr1, ptr2, -ne_expr : ptr1, ptr2, -parm_decl ptr2: ptr1, ptr2, -pointer_type : ptr1, ptr2, -integer_type : ptr1, ptr2, -type_decl int: ptr1, ptr2, -integer_cst 32: ptr1, ptr2, -integer_cst -2147483648: ptr1, ptr2, -integer_cst 2147483647: ptr1, ptr2, -integer_cst 64: ptr1, ptr2, -integer_cst 0: ptr1, ptr2, +ne_expr : ptr2, +parm_decl ptr2: ptr2, +pointer_type : ptr2, +integer_type : ptr2, +type_decl int: ptr2, +integer_cst 32: ptr2, +integer_cst -2147483648: ptr2, +integer_cst 2147483647: ptr2, +integer_cst 64: ptr2, +integer_cst 0: ptr2, statement_list : cleanup_point_expr : expr_stmt : @@ -878,31 +878,31 @@ integer_cst -2147483648: ptr1, ptr2, integer_cst 2147483647: ptr1, ptr2, integer_cst 64: ptr1, ptr2, integer_cst 0: ptr1, ptr2, -ne_expr : ptr1, ptr2, -parm_decl ptr2: ptr1, ptr2, -pointer_type : ptr1, ptr2, -integer_type : ptr1, ptr2, -type_decl int: ptr1, ptr2, -integer_cst 32: ptr1, ptr2, -integer_cst -2147483648: ptr1, ptr2, -integer_cst 2147483647: ptr1, ptr2, -integer_cst 64: ptr1, ptr2, -integer_cst 0: ptr1, ptr2, -ne_expr : ptr1, ptr2, -component_ref : ptr1, ptr2, -indirect_ref : ptr1, ptr2, -nop_expr : ptr1, ptr2, -parm_decl this: ptr1, ptr2, -pointer_type : ptr1, ptr2, -record_type : ptr1, ptr2, -type_decl Object1: ptr1, ptr2, -field_decl k: ptr1, ptr2, -integer_cst 32: ptr1, ptr2, -type_decl Object1: ptr1, ptr2, -integer_cst 64: ptr1, ptr2, -field_decl k: ptr1, ptr2, -integer_cst 32: ptr1, ptr2, -integer_cst 0: ptr1, ptr2, +ne_expr : ptr2, +parm_decl ptr2: ptr2, +pointer_type : ptr2, +integer_type : ptr2, +type_decl int: ptr2, +integer_cst 32: ptr2, +integer_cst -2147483648: ptr2, +integer_cst 2147483647: ptr2, +integer_cst 64: ptr2, +integer_cst 0: ptr2, +ne_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: statement_list : ptr1, ptr2, cleanup_point_expr : ptr1, ptr2, expr_stmt : ptr1, ptr2, @@ -1024,16 +1024,16 @@ integer_cst -2147483648: ptr1, ptr2, integer_cst 2147483647: ptr1, ptr2, integer_cst 64: ptr1, ptr2, integer_cst 0: ptr1, ptr2, -ne_expr : ptr1, ptr2, -parm_decl ptr2: ptr1, ptr2, -pointer_type : ptr1, ptr2, -integer_type : ptr1, ptr2, -type_decl int: ptr1, ptr2, -integer_cst 32: ptr1, ptr2, -integer_cst -2147483648: ptr1, ptr2, -integer_cst 2147483647: ptr1, ptr2, -integer_cst 64: ptr1, ptr2, -integer_cst 0: ptr1, ptr2, +ne_expr : ptr2, +parm_decl ptr2: ptr2, +pointer_type : ptr2, +integer_type : ptr2, +type_decl int: ptr2, +integer_cst 32: ptr2, +integer_cst -2147483648: ptr2, +integer_cst 2147483647: ptr2, +integer_cst 64: ptr2, +integer_cst 0: ptr2, ne_expr : ptr1, ptr2, parm_decl ptr1: ptr1, ptr2, pointer_type : ptr1, ptr2, diff --git a/test/test11-01.txt b/test/test11-01.txt index f89c71a..0fe5d8e 100644 --- a/test/test11-01.txt +++ b/test/test11-01.txt @@ -121,7 +121,7 @@ function_decl func1 test11.cpp 11:10 field_decl val test11.cpp 4:13 - field - signed integer_cst 32 - decl size - integer_cst 1 - operand + integer_cst 100 - operand return_expr test11.cpp 15:13 - then cleanup_point_expr test11.cpp 18:24 - statement expr_stmt test11.cpp 18:24 - operand @@ -144,7 +144,7 @@ function_decl func1 test11.cpp 11:10 field_decl val test11.cpp 4:13 - field - signed integer_cst 32 - decl size - integer_cst 100 - operand + integer_cst 200 - operand function_decl func2 test11.cpp 21:10 - isPublic: 1 method_type - function type @@ -268,7 +268,7 @@ function_decl func2 test11.cpp 21:10 field_decl val test11.cpp 4:13 - field - signed integer_cst 32 - decl size - integer_cst 1 - operand + integer_cst 100 - operand statement_list - then cleanup_point_expr test11.cpp 25:28 - statement expr_stmt test11.cpp 25:28 - operand @@ -291,7 +291,7 @@ function_decl func2 test11.cpp 21:10 field_decl val test11.cpp 4:13 - field - signed integer_cst 32 - decl size - integer_cst 100 - operand + integer_cst 200 - operand return_expr test11.cpp 26:13 - statement cleanup_point_expr test11.cpp 29:24 - statement expr_stmt test11.cpp 29:24 - operand @@ -314,4 +314,708 @@ function_decl func2 test11.cpp 21:10 field_decl val test11.cpp 4:13 - field - signed integer_cst 32 - decl size + integer_cst 300 - operand +function_decl func3 test11.cpp 32:10 +- isPublic: 1 + method_type - function type + void_type - method return type + type_decl void 0:0 - type name + - isAutogenerated: 1 + record_type - method base type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void 0:0 - type name + - isAutogenerated: 1 + result_decl test11.cpp 33:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void 0:0 - type name + - isAutogenerated: 1 + parm_decl this test11.cpp 32:40 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr1 test11.cpp 32:23 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + parm_decl ptr2 test11.cpp 32:36 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + if_stmt test11.cpp 34:9 - statement + truth_orif_expr test11.cpp 34:18 - condition + ne_expr - operand + - isUsed: 1 + parm_decl ptr1 test11.cpp 32:23 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + eq_expr test11.cpp 34:31 - operand + component_ref test11.cpp 34:27 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr1 test11.cpp 32:23 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 100 - operand + return_expr test11.cpp 36:13 - then + cleanup_point_expr test11.cpp 39:24 - statement + expr_stmt test11.cpp 39:24 - operand + convert_expr - expresssion + modify_expr - operand + component_ref test11.cpp 39:15 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr1 test11.cpp 32:23 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size integer_cst 200 - operand +function_decl func4 test11.cpp 42:10 +- isPublic: 1 + method_type - function type + void_type - method return type + type_decl void 0:0 - type name + - isAutogenerated: 1 + record_type - method base type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void 0:0 - type name + - isAutogenerated: 1 + result_decl test11.cpp 43:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void 0:0 - type name + - isAutogenerated: 1 + parm_decl this test11.cpp 42:40 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr1 test11.cpp 42:23 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + parm_decl ptr2 test11.cpp 42:36 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + if_stmt test11.cpp 44:9 - statement + truth_andif_expr test11.cpp 44:19 - condition + eq_expr test11.cpp 44:14 - operand + - isUsed: 1 + parm_decl ptr1 test11.cpp 42:23 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + eq_expr test11.cpp 44:32 - operand + component_ref test11.cpp 44:28 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr1 test11.cpp 42:23 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 100 - operand + return_expr test11.cpp 46:13 - then + cleanup_point_expr test11.cpp 49:24 - statement + expr_stmt test11.cpp 49:24 - operand + convert_expr - expresssion + modify_expr - operand + component_ref test11.cpp 49:15 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr1 test11.cpp 42:23 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 200 - operand +function_decl func5 test11.cpp 52:10 +- isPublic: 1 + method_type - function type + void_type - method return type + type_decl void 0:0 - type name + - isAutogenerated: 1 + record_type - method base type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void 0:0 - type name + - isAutogenerated: 1 + result_decl test11.cpp 53:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void 0:0 - type name + - isAutogenerated: 1 + parm_decl this test11.cpp 52:40 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr1 test11.cpp 52:23 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr2 test11.cpp 52:36 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + if_stmt test11.cpp 54:9 - statement + truth_orif_expr test11.cpp 54:41 - condition + truth_orif_expr test11.cpp 54:20 - operand + eq_expr test11.cpp 54:15 - operand + - isUsed: 1 + parm_decl ptr1 test11.cpp 52:23 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + eq_expr test11.cpp 54:33 - operand + component_ref test11.cpp 54:29 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr1 test11.cpp 52:23 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 100 - operand + truth_orif_expr test11.cpp 54:51 - operand + eq_expr test11.cpp 54:46 - operand + - isUsed: 1 + parm_decl ptr2 test11.cpp 52:36 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + eq_expr test11.cpp 54:64 - operand + component_ref test11.cpp 54:60 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr2 test11.cpp 52:36 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 200 - operand + return_expr test11.cpp 56:13 - then + cleanup_point_expr test11.cpp 59:24 - statement + expr_stmt test11.cpp 59:24 - operand + convert_expr - expresssion + modify_expr - operand + component_ref test11.cpp 59:15 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr1 test11.cpp 52:23 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 300 - operand + cleanup_point_expr test11.cpp 60:24 - statement + expr_stmt test11.cpp 60:24 - operand + convert_expr - expresssion + modify_expr - operand + component_ref test11.cpp 60:15 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr2 test11.cpp 52:36 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 400 - operand +function_decl func6 test11.cpp 63:10 +- isPublic: 1 + method_type - function type + void_type - method return type + type_decl void 0:0 - type name + - isAutogenerated: 1 + record_type - method base type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void 0:0 - type name + - isAutogenerated: 1 + result_decl test11.cpp 64:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void 0:0 - type name + - isAutogenerated: 1 + parm_decl this test11.cpp 63:40 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test11.cpp 7:7 - type name + - isAutogenerated: 1 + field_decl k test11.cpp 9:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test11.cpp 8:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr1 test11.cpp 63:23 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl ptr2 test11.cpp 63:36 - argument + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code + if_stmt test11.cpp 65:9 - statement + truth_andif_expr test11.cpp 65:41 - condition + truth_orif_expr test11.cpp 65:20 - operand + eq_expr test11.cpp 65:15 - operand + - isUsed: 1 + parm_decl ptr1 test11.cpp 63:23 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + eq_expr test11.cpp 65:33 - operand + component_ref test11.cpp 65:29 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr1 test11.cpp 63:23 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 100 - operand + truth_orif_expr test11.cpp 65:51 - operand + eq_expr test11.cpp 65:46 - operand + - isUsed: 1 + parm_decl ptr2 test11.cpp 63:36 - operand + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + integer_cst 0 - operand + eq_expr test11.cpp 65:64 - operand + component_ref test11.cpp 65:60 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr2 test11.cpp 63:36 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 200 - operand + return_expr test11.cpp 67:13 - then + cleanup_point_expr test11.cpp 70:24 - statement + expr_stmt test11.cpp 70:24 - operand + convert_expr - expresssion + modify_expr - operand + component_ref test11.cpp 70:15 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr1 test11.cpp 63:23 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 300 - operand + cleanup_point_expr test11.cpp 71:24 - statement + expr_stmt test11.cpp 71:24 - operand + convert_expr - expresssion + modify_expr - operand + component_ref test11.cpp 71:15 - operand + indirect_ref - object + - isUsed: 1 + parm_decl ptr2 test11.cpp 63:36 - ref + pointer_type - decl type + record_type - nested type + type_decl Data1 test11.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + type_decl Data1 test11.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + field_decl val test11.cpp 4:13 - field + - signed + integer_cst 32 - decl size + integer_cst 400 - operand diff --git a/test/test11-02.txt b/test/test11-02.txt index 3390e93..f9bb543 100644 --- a/test/test11-02.txt +++ b/test/test11-02.txt @@ -1,2 +1,6 @@ func1: pointer_type ptr1, pointer_type ptr2, func2: pointer_type ptr1, pointer_type ptr2, +func3: pointer_type ptr1, pointer_type ptr2, +func4: pointer_type ptr1, pointer_type ptr2, +func5: pointer_type ptr1, pointer_type ptr2, +func6: pointer_type ptr1, pointer_type ptr2, diff --git a/test/test11-03.txt b/test/test11-03.txt index 5e7e1d1..842653e 100644 --- a/test/test11-03.txt +++ b/test/test11-03.txt @@ -25,7 +25,7 @@ type_decl Data1: ptr2, integer_cst 64: ptr2, field_decl val: ptr2, integer_cst 32: ptr2, -integer_cst 1: ptr2, +integer_cst 100: ptr2, return_expr : ptr1, ptr2, cleanup_point_expr : ptr1, ptr2, expr_stmt : ptr2, @@ -43,7 +43,7 @@ type_decl Data1: ptr2, integer_cst 64: ptr2, field_decl val: ptr2, integer_cst 32: ptr2, -integer_cst 100: ptr2, +integer_cst 200: ptr2, function_decl func2: statement_list : ptr1, ptr2, if_stmt : ptr1, ptr2, @@ -71,7 +71,7 @@ type_decl Data1: ptr2, integer_cst 64: ptr2, field_decl val: ptr2, integer_cst 32: ptr2, -integer_cst 1: ptr2, +integer_cst 100: ptr2, statement_list : ptr1, ptr2, cleanup_point_expr : ptr1, ptr2, expr_stmt : ptr1, ptr2, @@ -80,7 +80,7 @@ modify_expr : ptr1, ptr2, component_ref : ptr1, ptr2, test11.cpp: In member function 'void Object1::func2(Data1*, Data1*)': test11.cpp:25:19: warning: Using parameter 'ptr1' without checking for null pointer - ptr1->val = 100; + ptr1->val = 200; ^ indirect_ref : ptr1, ptr2, parm_decl ptr1: ptr1, ptr2, @@ -93,7 +93,7 @@ type_decl Data1: ptr1, ptr2, integer_cst 64: ptr1, ptr2, field_decl val: ptr1, ptr2, integer_cst 32: ptr1, ptr2, -integer_cst 100: ptr1, ptr2, +integer_cst 200: ptr1, ptr2, return_expr : ptr1, ptr2, cleanup_point_expr : ptr1, ptr2, expr_stmt : ptr1, ptr2, @@ -101,6 +101,112 @@ convert_expr : ptr1, ptr2, modify_expr : ptr1, ptr2, component_ref : ptr1, ptr2, test11.cpp:29:15: warning: Using parameter 'ptr1' without checking for null pointer + ptr1->val = 300; + ^ +indirect_ref : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +integer_cst 300: ptr1, ptr2, +function_decl func3: +statement_list : ptr1, ptr2, +if_stmt : ptr1, ptr2, +truth_orif_expr : ptr1, ptr2, +ne_expr : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +integer_cst 0: ptr1, ptr2, +eq_expr : ptr1, ptr2, +component_ref : ptr1, ptr2, +test11.cpp: In member function 'void Object1::func3(Data1*, Data1*)': +test11.cpp:34:27: warning: Using parameter 'ptr1' without checking for null pointer + if (ptr1 || ptr1->val == 100) + ^ +indirect_ref : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +integer_cst 100: ptr1, ptr2, +return_expr : ptr1, ptr2, +cleanup_point_expr : ptr1, ptr2, +expr_stmt : ptr1, ptr2, +convert_expr : ptr1, ptr2, +modify_expr : ptr1, ptr2, +component_ref : ptr1, ptr2, +test11.cpp:39:15: warning: Using parameter 'ptr1' without checking for null pointer + ptr1->val = 200; + ^ +indirect_ref : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +integer_cst 200: ptr1, ptr2, +function_decl func4: +statement_list : ptr1, ptr2, +if_stmt : ptr1, ptr2, +truth_andif_expr : ptr1, ptr2, +eq_expr : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +integer_cst 0: ptr1, ptr2, +eq_expr : ptr1, ptr2, +component_ref : ptr1, ptr2, +test11.cpp: In member function 'void Object1::func4(Data1*, Data1*)': +test11.cpp:44:28: warning: Using parameter 'ptr1' without checking for null pointer + if (!ptr1 && ptr1->val == 100) + ^ +indirect_ref : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +integer_cst 100: ptr1, ptr2, +return_expr : ptr1, ptr2, +cleanup_point_expr : ptr1, ptr2, +expr_stmt : ptr1, ptr2, +convert_expr : ptr1, ptr2, +modify_expr : ptr1, ptr2, +component_ref : ptr1, ptr2, +test11.cpp:49:15: warning: Using parameter 'ptr1' without checking for null pointer ptr1->val = 200; ^ indirect_ref : ptr1, ptr2, @@ -115,3 +221,188 @@ integer_cst 64: ptr1, ptr2, field_decl val: ptr1, ptr2, integer_cst 32: ptr1, ptr2, integer_cst 200: ptr1, ptr2, +function_decl func5: +statement_list : ptr1, ptr2, +if_stmt : ptr1, ptr2, +truth_orif_expr : ptr1, ptr2, +truth_orif_expr : ptr1, ptr2, +eq_expr : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +integer_cst 0: ptr1, ptr2, +eq_expr : ptr2, +component_ref : ptr2, +indirect_ref : ptr2, +parm_decl ptr1: ptr2, +pointer_type : ptr2, +record_type : ptr2, +type_decl Data1: ptr2, +field_decl val: ptr2, +integer_cst 32: ptr2, +type_decl Data1: ptr2, +integer_cst 64: ptr2, +field_decl val: ptr2, +integer_cst 32: ptr2, +integer_cst 100: ptr2, +truth_orif_expr : ptr2, +eq_expr : ptr2, +parm_decl ptr2: ptr2, +pointer_type : ptr2, +record_type : ptr2, +type_decl Data1: ptr2, +field_decl val: ptr2, +integer_cst 32: ptr2, +type_decl Data1: ptr2, +integer_cst 64: ptr2, +integer_cst 0: ptr2, +eq_expr : +component_ref : +indirect_ref : +parm_decl ptr2: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +type_decl Data1: +integer_cst 64: +field_decl val: +integer_cst 32: +integer_cst 200: +return_expr : ptr1, ptr2, +cleanup_point_expr : ptr1, ptr2, +expr_stmt : +convert_expr : +modify_expr : +component_ref : +indirect_ref : +parm_decl ptr1: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +type_decl Data1: +integer_cst 64: +field_decl val: +integer_cst 32: +integer_cst 300: +cleanup_point_expr : ptr1, ptr2, +expr_stmt : +convert_expr : +modify_expr : +component_ref : +indirect_ref : +parm_decl ptr2: +pointer_type : +record_type : +type_decl Data1: +field_decl val: +integer_cst 32: +type_decl Data1: +integer_cst 64: +field_decl val: +integer_cst 32: +integer_cst 400: +function_decl func6: +statement_list : ptr1, ptr2, +if_stmt : ptr1, ptr2, +truth_andif_expr : ptr1, ptr2, +truth_orif_expr : ptr1, ptr2, +eq_expr : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +integer_cst 0: ptr1, ptr2, +eq_expr : ptr2, +component_ref : ptr2, +indirect_ref : ptr2, +parm_decl ptr1: ptr2, +pointer_type : ptr2, +record_type : ptr2, +type_decl Data1: ptr2, +field_decl val: ptr2, +integer_cst 32: ptr2, +type_decl Data1: ptr2, +integer_cst 64: ptr2, +field_decl val: ptr2, +integer_cst 32: ptr2, +integer_cst 100: ptr2, +truth_orif_expr : ptr1, ptr2, +eq_expr : ptr1, ptr2, +parm_decl ptr2: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +integer_cst 0: ptr1, ptr2, +eq_expr : ptr1, +component_ref : ptr1, +indirect_ref : ptr1, +parm_decl ptr2: ptr1, +pointer_type : ptr1, +record_type : ptr1, +type_decl Data1: ptr1, +field_decl val: ptr1, +integer_cst 32: ptr1, +type_decl Data1: ptr1, +integer_cst 64: ptr1, +field_decl val: ptr1, +integer_cst 32: ptr1, +integer_cst 200: ptr1, +return_expr : ptr1, ptr2, +cleanup_point_expr : ptr1, ptr2, +expr_stmt : ptr1, ptr2, +convert_expr : ptr1, ptr2, +modify_expr : ptr1, ptr2, +component_ref : ptr1, ptr2, +test11.cpp: In member function 'void Object1::func6(Data1*, Data1*)': +test11.cpp:70:15: warning: Using parameter 'ptr1' without checking for null pointer + ptr1->val = 300; + ^ +indirect_ref : ptr1, ptr2, +parm_decl ptr1: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +integer_cst 300: ptr1, ptr2, +cleanup_point_expr : ptr1, ptr2, +expr_stmt : ptr1, ptr2, +convert_expr : ptr1, ptr2, +modify_expr : ptr1, ptr2, +component_ref : ptr1, ptr2, +test11.cpp:71:15: warning: Using parameter 'ptr2' without checking for null pointer + ptr2->val = 400; + ^ +indirect_ref : ptr1, ptr2, +parm_decl ptr2: ptr1, ptr2, +pointer_type : ptr1, ptr2, +record_type : ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +type_decl Data1: ptr1, ptr2, +integer_cst 64: ptr1, ptr2, +field_decl val: ptr1, ptr2, +integer_cst 32: ptr1, ptr2, +integer_cst 400: ptr1, ptr2, diff --git a/test/test11-04.txt b/test/test11-04.txt index cd4bfc0..62a6828 100644 --- a/test/test11-04.txt +++ b/test/test11-04.txt @@ -1,7 +1,28 @@ test11.cpp: In member function 'void Object1::func2(Data1*, Data1*)': test11.cpp:25:19: warning: Using parameter 'ptr1' without checking for null pointer - ptr1->val = 100; + ptr1->val = 200; ^ test11.cpp:29:15: warning: Using parameter 'ptr1' without checking for null pointer + ptr1->val = 300; + ^ +test11.cpp: In member function 'void Object1::func3(Data1*, Data1*)': +test11.cpp:34:27: warning: Using parameter 'ptr1' without checking for null pointer + if (ptr1 || ptr1->val == 100) + ^ +test11.cpp:39:15: warning: Using parameter 'ptr1' without checking for null pointer + ptr1->val = 200; + ^ +test11.cpp: In member function 'void Object1::func4(Data1*, Data1*)': +test11.cpp:44:28: warning: Using parameter 'ptr1' without checking for null pointer + if (!ptr1 && ptr1->val == 100) + ^ +test11.cpp:49:15: warning: Using parameter 'ptr1' without checking for null pointer ptr1->val = 200; ^ +test11.cpp: In member function 'void Object1::func6(Data1*, Data1*)': +test11.cpp:70:15: warning: Using parameter 'ptr1' without checking for null pointer + ptr1->val = 300; + ^ +test11.cpp:71:15: warning: Using parameter 'ptr2' without checking for null pointer + ptr2->val = 400; + ^ diff --git a/test/test11.cpp b/test/test11.cpp index 4debb95..7e4fd2a 100644 --- a/test/test11.cpp +++ b/test/test11.cpp @@ -10,22 +10,64 @@ class Object1 void func1(Data1 *ptr1, Data1 *ptr2) { - if (!ptr1 || ptr1->val == 1) + if (!ptr1 || ptr1->val == 100) { return; } - ptr1->val = 100; + ptr1->val = 200; } void func2(Data1 *ptr1, Data1 *ptr2) { - if (ptr1 && ptr1->val == 1) + if (ptr1 && ptr1->val == 100) + { + ptr1->val = 200; + return; + } + + ptr1->val = 300; + } + + void func3(Data1 *ptr1, Data1 *ptr2) + { + if (ptr1 || ptr1->val == 100) + { + return; + } + + ptr1->val = 200; + } + + void func4(Data1 *ptr1, Data1 *ptr2) + { + if (!ptr1 && ptr1->val == 100) { - ptr1->val = 100; return; } ptr1->val = 200; } + + void func5(Data1 *ptr1, Data1 *ptr2) + { + if ((!ptr1 || ptr1->val == 100) || (!ptr2 || ptr2->val == 200)) + { + return; + } + + ptr1->val = 300; + ptr2->val = 400; + } + + void func6(Data1 *ptr1, Data1 *ptr2) + { + if ((!ptr1 || ptr1->val == 100) && (!ptr2 || ptr2->val == 200)) + { + return; + } + + ptr1->val = 300; + ptr2->val = 400; + } }; -- cgit v1.2.3-70-g09d2