From 49a72e0dec3fee4644b2dfa362e08e899def1082 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 15 Jun 2015 02:30:05 +0300 Subject: Add test7 --- test/Makefile | 10 +- test/test7-01.txt | 304 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ test/test7-02.txt | 211 +++++++++++++++++++++++++++++++++++++ test/test7-03.txt | 4 + test/test7-04.txt | 4 + test/test7-05.txt | 44 ++++++++ test/test7.cpp | 23 +++++ 7 files changed, 598 insertions(+), 2 deletions(-) create mode 100644 test/test7-01.txt create mode 100644 test/test7-02.txt create mode 100644 test/test7-03.txt create mode 100644 test/test7-04.txt create mode 100644 test/test7-05.txt create mode 100644 test/test7.cpp diff --git a/test/Makefile b/test/Makefile index 237acb5..bcf1c24 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,4 +1,4 @@ -.PHONY: test1 test2 test3 test4 test5 test6 crashtest1 crashtest2 all crashes clean +.PHONY: test1 test2 test3 test4 test5 test6 test7 crashtest1 crashtest2 all crashes clean .NOTPARALLEL: all allcrash CC := gcc-5 @@ -7,7 +7,7 @@ CXX := g++-5 PLUGIN = ../build/src/.libs/astdumper.so CMD = LANG=C ${CXX} -c -fplugin=${PLUGIN} -fplugin-arg-astdumper-command=${1} ${2} -o a.out 2>${3} -all: test1 test2 test3 test4 test5 test6 clean +all: test1 test2 test3 test4 test5 test6 test7 clean crashes: crashtest1 crashtest2 crashtest3 crashtest4 clean clean: @@ -39,6 +39,12 @@ test6: $(call CMD,dumpunsupported,test6.c,test6-02.txt) $(call CMD,detectnullpointers,test6.c,test6-03.txt) $(call CMD,dumpnullpointers,test6.c,test6-04.txt) +test7: + $(call CMD,dump,test7.cpp,test7-01.txt) + $(call CMD,smalldump,test7.cpp,test7-02.txt) + $(call CMD,findargs,test7.cpp,test7-03.txt) + $(call CMD,detectnullpointers,test7.cpp,test7-04.txt) + $(call CMD,dumpnullpointers,test7.cpp,test7-05.txt) crashtest1: $(call CMD,dump,crashtest1.h,crashtest1-01.txt) diff --git a/test/test7-01.txt b/test/test7-01.txt new file mode 100644 index 0000000..868c093 --- /dev/null +++ b/test/test7-01.txt @@ -0,0 +1,304 @@ +function_decl func1 test7.cpp 4: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 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + void_type - value + type_decl void 0:0 - type name + - isAutogenerated: 1 + result_decl test7.cpp 5:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void 0:0 - type name + - isAutogenerated: 1 + parm_decl this test7.cpp 4:16 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + statement_list - code +function_decl func2 test7.cpp 8: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 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 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 0:0 - type name + - isAutogenerated: 1 + result_decl test7.cpp 9:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void 0:0 - type name + - isAutogenerated: 1 + parm_decl this test7.cpp 8:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl aptr test7.cpp 8:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + cleanup_point_expr test7.cpp 10:18 - code + expr_stmt - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl aptr test7.cpp 8:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand +function_decl func3 test7.cpp 13: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 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 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 0:0 - type name + - isAutogenerated: 1 + result_decl test7.cpp 14:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void 0:0 - type name + - isAutogenerated: 1 + parm_decl this test7.cpp 13:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + - isUsed: 1 + parm_decl aptr test7.cpp 13:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + if_stmt - code + ne_expr - condition + - isUsed: 1 + parm_decl aptr test7.cpp 13:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand + cleanup_point_expr test7.cpp 16:22 - then + expr_stmt - operand + convert_expr - expresssion + modify_expr - operand + indirect_ref - operand + - isUsed: 1 + parm_decl aptr test7.cpp 13:21 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 0 - operand +function_decl func4 test7.cpp 19: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 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - arg types + pointer_type - value + record_type - nested type + type_decl Object1 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 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 0:0 - type name + - isAutogenerated: 1 + result_decl test7.cpp 20:5 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void 0:0 - type name + - isAutogenerated: 1 + - isUsed: 1 + parm_decl this test7.cpp 19:25 - argument + - isAutogenerated: 1 + pointer_type - decl type + record_type - nested type + type_decl Object1 test7.cpp 1:7 - type name + - isAutogenerated: 1 + field_decl k test7.cpp 3:9 - field + - signed + integer_cst 32 - decl size + type_decl Object1 test7.cpp 2:1 - field + - isAutogenerated: 1 + integer_cst 64 - parm size + parm_decl aptr test7.cpp 19:21 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int 0:0 - type name + - isAutogenerated: 1 + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + cleanup_point_expr test7.cpp 21:14 - code + expr_stmt - operand + convert_expr - expresssion + modify_expr - operand + component_ref - operand + integer_cst 3 - operand diff --git a/test/test7-02.txt b/test/test7-02.txt new file mode 100644 index 0000000..61de238 --- /dev/null +++ b/test/test7-02.txt @@ -0,0 +1,211 @@ +0 function_decl test7.cpp +1 method_type +2 void_type +3 type_decl +2 record_type +3 type_decl test7.cpp +3 field_decl test7.cpp +4 integer_cst +3 type_decl test7.cpp +2 tree_list +3 pointer_type +4 record_type +5 type_decl test7.cpp +5 field_decl test7.cpp +6 integer_cst +5 type_decl test7.cpp +3 tree_list +4 void_type +5 type_decl +1 result_decl test7.cpp +2 void_type +3 type_decl +1 parm_decl test7.cpp +2 pointer_type +3 record_type +4 type_decl test7.cpp +4 field_decl test7.cpp +5 integer_cst +4 type_decl test7.cpp +2 integer_cst +1 statement_list +0 function_decl test7.cpp +1 method_type +2 void_type +3 type_decl +2 record_type +3 type_decl test7.cpp +3 field_decl test7.cpp +4 integer_cst +3 type_decl test7.cpp +2 tree_list +3 pointer_type +4 record_type +5 type_decl test7.cpp +5 field_decl test7.cpp +6 integer_cst +5 type_decl test7.cpp +3 tree_list +4 pointer_type +5 integer_type +6 type_decl +6 integer_cst +6 integer_cst +6 integer_cst +4 tree_list +5 void_type +6 type_decl +1 result_decl test7.cpp +2 void_type +3 type_decl +1 parm_decl test7.cpp +2 pointer_type +3 record_type +4 type_decl test7.cpp +4 field_decl test7.cpp +5 integer_cst +4 type_decl test7.cpp +2 integer_cst +1 parm_decl test7.cpp +2 pointer_type +3 integer_type +4 type_decl +4 integer_cst +4 integer_cst +4 integer_cst +2 integer_cst +1 cleanup_point_expr test7.cpp +2 expr_stmt +3 convert_expr +4 modify_expr +5 indirect_ref +6 parm_decl test7.cpp +7 pointer_type +8 integer_type +9 type_decl +9 integer_cst +9 integer_cst +9 integer_cst +7 integer_cst +5 integer_cst +0 function_decl test7.cpp +1 method_type +2 void_type +3 type_decl +2 record_type +3 type_decl test7.cpp +3 field_decl test7.cpp +4 integer_cst +3 type_decl test7.cpp +2 tree_list +3 pointer_type +4 record_type +5 type_decl test7.cpp +5 field_decl test7.cpp +6 integer_cst +5 type_decl test7.cpp +3 tree_list +4 pointer_type +5 integer_type +6 type_decl +6 integer_cst +6 integer_cst +6 integer_cst +4 tree_list +5 void_type +6 type_decl +1 result_decl test7.cpp +2 void_type +3 type_decl +1 parm_decl test7.cpp +2 pointer_type +3 record_type +4 type_decl test7.cpp +4 field_decl test7.cpp +5 integer_cst +4 type_decl test7.cpp +2 integer_cst +1 parm_decl test7.cpp +2 pointer_type +3 integer_type +4 type_decl +4 integer_cst +4 integer_cst +4 integer_cst +2 integer_cst +1 if_stmt +2 ne_expr +3 parm_decl test7.cpp +4 pointer_type +5 integer_type +6 type_decl +6 integer_cst +6 integer_cst +6 integer_cst +4 integer_cst +3 integer_cst +2 cleanup_point_expr test7.cpp +3 expr_stmt +4 convert_expr +5 modify_expr +6 indirect_ref +7 parm_decl test7.cpp +8 pointer_type +9 integer_type +10 type_decl +10 integer_cst +10 integer_cst +10 integer_cst +8 integer_cst +6 integer_cst +0 function_decl test7.cpp +1 method_type +2 void_type +3 type_decl +2 record_type +3 type_decl test7.cpp +3 field_decl test7.cpp +4 integer_cst +3 type_decl test7.cpp +2 tree_list +3 pointer_type +4 record_type +5 type_decl test7.cpp +5 field_decl test7.cpp +6 integer_cst +5 type_decl test7.cpp +3 tree_list +4 pointer_type +5 integer_type +6 type_decl +6 integer_cst +6 integer_cst +6 integer_cst +4 tree_list +5 void_type +6 type_decl +1 result_decl test7.cpp +2 void_type +3 type_decl +1 parm_decl test7.cpp +2 pointer_type +3 record_type +4 type_decl test7.cpp +4 field_decl test7.cpp +5 integer_cst +4 type_decl test7.cpp +2 integer_cst +1 parm_decl test7.cpp +2 pointer_type +3 integer_type +4 type_decl +4 integer_cst +4 integer_cst +4 integer_cst +2 integer_cst +1 cleanup_point_expr test7.cpp +2 expr_stmt +3 convert_expr +4 modify_expr +5 component_ref +5 integer_cst diff --git a/test/test7-03.txt b/test/test7-03.txt new file mode 100644 index 0000000..ef31826 --- /dev/null +++ b/test/test7-03.txt @@ -0,0 +1,4 @@ +func1: pointer_type this, +func2: pointer_type this, pointer_type aptr, +func3: pointer_type this, pointer_type aptr, +func4: pointer_type this, pointer_type aptr, diff --git a/test/test7-04.txt b/test/test7-04.txt new file mode 100644 index 0000000..31b5a8c --- /dev/null +++ b/test/test7-04.txt @@ -0,0 +1,4 @@ +test7.cpp: In member function 'void Object1::func2(int*)': +test7.cpp:10:18: warning: Using variable without check for NULL + *aptr = 0; + ^ diff --git a/test/test7-05.txt b/test/test7-05.txt new file mode 100644 index 0000000..3e9b9b6 --- /dev/null +++ b/test/test7-05.txt @@ -0,0 +1,44 @@ +function_decl func1: +statement_list : this, +function_decl func2: +cleanup_point_expr : aptr, this, +expr_stmt : aptr, this, +convert_expr : aptr, this, +modify_expr : aptr, this, +test7.cpp: In member function 'void Object1::func2(int*)': +test7.cpp:10:18: warning: Using variable without check for NULL + *aptr = 0; + ^ +indirect_ref : aptr, this, +parm_decl aptr: aptr, this, +pointer_type : aptr, this, +integer_type : aptr, this, +type_decl int: aptr, this, +integer_cst 32: aptr, this, +integer_cst -2147483648: aptr, this, +integer_cst 2147483647: aptr, this, +integer_cst 64: aptr, this, +integer_cst 0: aptr, this, +function_decl func3: +if_stmt : aptr, this, +cleanup_point_expr : this, +expr_stmt : this, +convert_expr : this, +modify_expr : this, +indirect_ref : this, +parm_decl aptr: this, +pointer_type : this, +integer_type : this, +type_decl int: this, +integer_cst 32: this, +integer_cst -2147483648: this, +integer_cst 2147483647: this, +integer_cst 64: this, +integer_cst 0: this, +function_decl func4: +cleanup_point_expr : aptr, this, +expr_stmt : aptr, this, +convert_expr : aptr, this, +modify_expr : aptr, this, +component_ref : aptr, this, +integer_cst 3: aptr, this, diff --git a/test/test7.cpp b/test/test7.cpp new file mode 100644 index 0000000..ad91c4d --- /dev/null +++ b/test/test7.cpp @@ -0,0 +1,23 @@ +class Object1 +{ + int k; + void func1() + { + } + + void func2(int *aptr) + { + *aptr = 0; + } + + void func3(int *aptr) + { + if (aptr) + *aptr = 0; + } + + void func4(int *aptr) + { + k = 3; + } +}; -- cgit v1.2.3-70-g09d2