diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-21 00:49:08 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-21 00:49:08 +0300 |
commit | ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89 (patch) | |
tree | d34515a71de1f046e07c5857154ce98cf8299e58 | |
parent | 088a411ead941fc8b5d5eb978e4b6fed0bcd03e4 (diff) | |
download | paranucker-ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89.tar.gz paranucker-ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89.tar.bz2 paranucker-ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89.tar.xz paranucker-ea10f7bf8cadb21a392b06e1c7f50dcffca7ea89.zip |
Add test13.
-rw-r--r-- | test/Makefile | 18 | ||||
-rw-r--r-- | test/test13-01.txt | 662 | ||||
-rw-r--r-- | test/test13-02.txt | 7 | ||||
-rw-r--r-- | test/test13-03.txt | 31 | ||||
-rw-r--r-- | test/test13-04.txt | 0 | ||||
-rw-r--r-- | test/test13-05.txt | 188 | ||||
-rw-r--r-- | test/test13.c | 47 |
7 files changed, 952 insertions, 1 deletions
diff --git a/test/Makefile b/test/Makefile index 7e7b99e..ff8ca81 100644 --- a/test/Makefile +++ b/test/Makefile @@ -11,7 +11,8 @@ TESTS09 = test09-01 test09-02 test09-03 test09-04 TESTS10 = test10-01 test10-02 test10-03 test10-04 TESTS11 = test11-01 test11-02 test11-03 test11-04 TESTS12 = test12-01 test12-02 test12-03 test12-04 -ALLTESTS = test01 test02 test03 test04 test05 test06 test07 test08 test09 test10 test11 test12 ${TESTS01} ${TESTS02} ${TESTS03} ${TESTS04} ${TESTS05} ${TESTS06} ${TESTS07} ${TESTS08} ${TESTS09} ${TESTS10} ${TESTS11} ${TESTS12} +TESTS13 = test13-01 test13-02 test13-03 test13-04 test13-05 +ALLTESTS = test01 test02 test03 test04 test05 test06 test07 test08 test09 test10 test11 test12 test13 ${TESTS01} ${TESTS02} ${TESTS03} ${TESTS04} ${TESTS05} ${TESTS06} ${TESTS07} ${TESTS08} ${TESTS09} ${TESTS10} ${TESTS11} ${TESTS12} ${TESTS13} .PHONY: ${ALLTESTS} ${CRASHES} all crashes @@ -20,7 +21,10 @@ CXX := g++-5 MAKEFLAGS += --jobs=9 PLUGINXX = ../build/src/.libs/cppastdumper.so +PLUGIN = ../build/src/.libs/astdumper.so + CMDXX = LANG=C ${CXX} -c -fplugin=${PLUGINXX} -fplugin-arg-cppastdumper-command=${1} ${2} -o ../build/${3}.out 2>${3} +CMD = LANG=C ${CC} -c -fplugin=${PLUGIN} -fplugin-arg-astdumper-command=${1} ${2} -o ../build/${3}.out 2>${3} all: ${ALLTESTS} ${CRASHES} tests: ${ALLTESTS} @@ -140,6 +144,18 @@ test12-03: test12-04: $(call CMDXX,detectnullpointers,test12.cpp,test12-04.txt) +test13: ${TESTS13} +test13-01: + $(call CMD,dump,test13.c,test13-01.txt) +test13-02: + $(call CMD,findargs,test13.c,test13-02.txt) +test13-03: + $(call CMD,detectnullpointers,test13.c,test13-03.txt) +test13-04: + $(call CMD,dumpunsupported,test13.c,test13-04.txt) +test13-05: + $(call CMD,dumpnullpointers,test13.c,test13-05.txt) + crashtest01: $(call CMDXX,dump,crashtest01.h,crashtest01-01.txt) crashtest02: diff --git a/test/test13-01.txt b/test/test13-01.txt new file mode 100644 index 0000000..52a1b4d --- /dev/null +++ b/test/test13-01.txt @@ -0,0 +1,662 @@ +function_decl func1 test13.c 10:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + integer_type - value + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + integer_type - value + - precisionBits: 8 + - isChar: 1 + - signed + type_decl char - type name + integer_cst 8 - type size + integer_cst -128 - min value + integer_cst 127 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test13.c 10:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + parm_decl a test13.c 10:16 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 32 - parm size + - isUsed: 1 + parm_decl b test13.c 10:24 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + parm_decl c test13.c 10:32 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 8 - parm size + bind_expr test13.c 11:1 - code + modify_expr test13.c 12:8 - operand + indirect_ref test13.c 12:5 - operand + - isUsed: 1 + parm_decl b test13.c 10:24 - ref + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 100 - operand + block - operand +function_decl func2 test13.c 15:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + integer_type - value + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + integer_type - value + - precisionBits: 8 + - isChar: 1 + - signed + type_decl char - type name + integer_cst 8 - type size + integer_cst -128 - min value + integer_cst 127 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test13.c 15:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + parm_decl a test13.c 15:16 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 32 - parm size + - isUsed: 1 + parm_decl b test13.c 15:24 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + parm_decl c test13.c 15:32 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 8 - parm size + bind_expr test13.c 16:1 - code + modify_expr test13.c 17:14 - operand + indirect_ref test13.c 17:5 - operand + pointer_plus_expr test13.c 17:9 - ref + - isUsed: 1 + parm_decl b test13.c 15:24 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 4 - operand + integer_cst 200 - operand + block - operand +function_decl func3 test13.c 20:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + integer_type - value + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + integer_type - value + - precisionBits: 8 + - isChar: 1 + - signed + type_decl char - type name + integer_cst 8 - type size + integer_cst -128 - min value + integer_cst 127 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test13.c 20:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + parm_decl a test13.c 20:16 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 32 - parm size + - isUsed: 1 + parm_decl b test13.c 20:24 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + parm_decl c test13.c 20:32 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 8 - parm size + bind_expr test13.c 21:1 - code + modify_expr test13.c 22:20 - operand + indirect_ref test13.c 22:5 - operand + pointer_plus_expr test13.c 22:9 - ref + - isUsed: 1 + parm_decl b test13.c 20:24 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 8 - operand + integer_cst 300 - operand + block - operand +function_decl func5 test13.c 25:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + integer_type - value + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + integer_type - value + - precisionBits: 8 + - isChar: 1 + - signed + type_decl char - type name + integer_cst 8 - type size + integer_cst -128 - min value + integer_cst 127 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test13.c 25:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + parm_decl a test13.c 25:16 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 32 - parm size + - isUsed: 1 + parm_decl b test13.c 25:24 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + parm_decl c test13.c 25:32 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 8 - parm size + bind_expr test13.c 26:1 - code + var_decl var1 test13.c 27:9 - operand + - isUsed: 1 + integer_cst 32 - decl size + integer_cst 1 - initial + integer_type - var type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + statement_list - operand + decl_expr test13.c 27:9 - statement + var_decl var1 test13.c 27:9 - operand + - isUsed: 1 + modify_expr test13.c 28:17 - statement + indirect_ref test13.c 28:5 - operand + pointer_plus_expr test13.c 28:12 - ref + - isUsed: 1 + parm_decl b test13.c 25:24 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + nop_expr - operand + mult_expr test13.c 28:12 - operand + nop_expr - operand + var_decl var1 test13.c 27:9 - operand + - isUsed: 1 + integer_cst 4 - operand + integer_cst 400 - operand + block - operand + var_decl var1 test13.c 27:9 - block vars + - isUsed: 1 +function_decl func6 test13.c 31:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + integer_type - value + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + integer_type - value + - precisionBits: 8 + - isChar: 1 + - signed + type_decl char - type name + integer_cst 8 - type size + integer_cst -128 - min value + integer_cst 127 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test13.c 31:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + parm_decl a test13.c 31:16 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 32 - parm size + - isUsed: 1 + parm_decl b test13.c 31:24 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + parm_decl c test13.c 31:32 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 8 - parm size + bind_expr test13.c 32:1 - code + var_decl var2 test13.c 33:10 - operand + - isUsed: 1 + integer_cst 64 - decl size + - isUsed: 1 + parm_decl b test13.c 31:24 - initial + pointer_type - var type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + statement_list - operand + decl_expr test13.c 33:10 - statement + var_decl var2 test13.c 33:10 - operand + - isUsed: 1 + modify_expr test13.c 34:11 - statement + indirect_ref test13.c 34:5 - operand + var_decl var2 test13.c 33:10 - ref + - isUsed: 1 + integer_cst 500 - operand + block - operand + var_decl var2 test13.c 33:10 - block vars + - isUsed: 1 +function_decl func7 test13.c 37:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + integer_type - value + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + integer_type - value + - precisionBits: 8 + - isChar: 1 + - signed + type_decl char - type name + integer_cst 8 - type size + integer_cst -128 - min value + integer_cst 127 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test13.c 37:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + parm_decl a test13.c 37:16 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 32 - parm size + - isUsed: 1 + parm_decl b test13.c 37:24 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + parm_decl c test13.c 37:32 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 8 - parm size + bind_expr test13.c 38:1 - code + var_decl var3 test13.c 39:10 - operand + - isUsed: 1 + integer_cst 64 - decl size + pointer_plus_expr test13.c 39:20 - initial + - isUsed: 1 + parm_decl b test13.c 37:24 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + integer_cst 48 - operand + pointer_type - var type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + statement_list - operand + decl_expr test13.c 39:10 - statement + var_decl var3 test13.c 39:10 - operand + - isUsed: 1 + modify_expr test13.c 40:11 - statement + indirect_ref test13.c 40:5 - operand + var_decl var3 test13.c 39:10 - ref + - isUsed: 1 + integer_cst 600 - operand + block - operand + var_decl var3 test13.c 39:10 - block vars + - isUsed: 1 +function_decl func8 test13.c 43:6 +- isPublic: 1 + function_type - function type + void_type - function return type + type_decl void - type name + tree_list - arg types + integer_type - value + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + pointer_type - value + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + tree_list - chain + integer_type - value + - precisionBits: 8 + - isChar: 1 + - signed + type_decl char - type name + integer_cst 8 - type size + integer_cst -128 - min value + integer_cst 127 - max value + tree_list - chain + void_type - value + type_decl void - type name + result_decl test13.c 43:6 - function result + - isAutogenerated: 1 + void_type - result type + type_decl void - type name + parm_decl a test13.c 43:16 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 32 - parm size + - isUsed: 1 + parm_decl bptr test13.c 43:24 - argument + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + parm_decl c test13.c 43:35 - argument + integer_type - decl type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 8 - parm size + bind_expr test13.c 44:1 - code + var_decl var4 test13.c 45:11 - operand + - isUsed: 1 + integer_cst 64 - decl size + addr_expr test13.c 45:18 - initial + - isUsed: 1 + parm_decl bptr test13.c 43:24 - operand + pointer_type - decl type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + integer_cst 64 - parm size + pointer_type - var type + pointer_type - nested type + integer_type - nested type + - precisionBits: 32 + - signed + type_decl int - type name + integer_cst 32 - type size + integer_cst -2147483648 - min value + integer_cst 2147483647 - max value + statement_list - operand + decl_expr test13.c 45:11 - statement + var_decl var4 test13.c 45:11 - operand + - isUsed: 1 + modify_expr test13.c 46:12 - statement + indirect_ref test13.c 46:5 - operand + indirect_ref test13.c 46:6 - ref + var_decl var4 test13.c 45:11 - ref + - isUsed: 1 + integer_cst 700 - operand + block - operand + var_decl var4 test13.c 45:11 - block vars + - isUsed: 1 diff --git a/test/test13-02.txt b/test/test13-02.txt new file mode 100644 index 0000000..d077f83 --- /dev/null +++ b/test/test13-02.txt @@ -0,0 +1,7 @@ +func1: pointer_type b, +func2: pointer_type b, +func3: pointer_type b, +func5: pointer_type b, +func6: pointer_type b, +func7: pointer_type b, +func8: pointer_type bptr, diff --git a/test/test13-03.txt b/test/test13-03.txt new file mode 100644 index 0000000..be7b019 --- /dev/null +++ b/test/test13-03.txt @@ -0,0 +1,31 @@ +test13.c: In function 'func1': +test13.c:12:8: warning: Using parameter 'b' without checking for null pointer + *b = 100; + ^ +test13.c: In function 'func2': +test13.c:17:9: warning: Using parameter 'b' without checking for null pointer + *(1 + b) = 200; + ^ +test13.c: In function 'func3': +test13.c:22:9: warning: Using parameter 'b' without checking for null pointer + *(1 + (1 + b)) = 300; + ^ +test13.c: In function 'func5': +test13.c:28:12: warning: Using parameter 'b' without checking for null pointer + *(var1 + b) = 400; + ^ +test13.c: In function 'func6': +test13.c:33:10: warning: Using parameter 'b' without checking for null pointer + int *var2 = b; + ^ +test13.c:33:10: warning: Using parameter 'b' without checking for null pointer +test13.c:33:10: warning: Using parameter 'b' without checking for null pointer +test13.c:33:10: warning: Using parameter 'b' without checking for null pointer +test13.c: In function 'func7': +test13.c:39:20: warning: Using parameter 'b' without checking for null pointer + int *var3 = 12 + b; + ^ +test13.c: In function 'func8': +test13.c:45:18: warning: Using parameter 'bptr' without checking for null pointer + int **var4 = &bptr; + ^ diff --git a/test/test13-04.txt b/test/test13-04.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/test13-04.txt diff --git a/test/test13-05.txt b/test/test13-05.txt new file mode 100644 index 0000000..1a64c29 --- /dev/null +++ b/test/test13-05.txt @@ -0,0 +1,188 @@ +function_decl func1: +bind_expr : b, +modify_expr : b, +test13.c: In function 'func1': +test13.c:12:8: warning: Using parameter 'b' without checking for null pointer + *b = 100; + ^ +indirect_ref : b, +parm_decl b: b, +pointer_type : b, +integer_type : b, +type_decl int: b, +integer_cst 32: b, +integer_cst -2147483648: b, +integer_cst 2147483647: b, +integer_cst 64: b, +integer_cst 100: b, +block : b, +function_decl func2: +bind_expr : b, +modify_expr : b, +indirect_ref : b, +pointer_plus_expr : b, +test13.c: In function 'func2': +test13.c:17:9: warning: Using parameter 'b' without checking for null pointer + *(1 + b) = 200; + ^ +parm_decl b: b, +pointer_type : b, +integer_type : b, +type_decl int: b, +integer_cst 32: b, +integer_cst -2147483648: b, +integer_cst 2147483647: b, +integer_cst 64: b, +integer_cst 4: b, +integer_cst 200: b, +block : b, +function_decl func3: +bind_expr : b, +modify_expr : b, +indirect_ref : b, +pointer_plus_expr : b, +test13.c: In function 'func3': +test13.c:22:9: warning: Using parameter 'b' without checking for null pointer + *(1 + (1 + b)) = 300; + ^ +parm_decl b: b, +pointer_type : b, +integer_type : b, +type_decl int: b, +integer_cst 32: b, +integer_cst -2147483648: b, +integer_cst 2147483647: b, +integer_cst 64: b, +integer_cst 8: b, +integer_cst 300: b, +block : b, +function_decl func5: +bind_expr : b, +var_decl var1: b, +integer_cst 32: b, +integer_cst 1: b, +integer_type : b, +type_decl int: b, +integer_cst 32: b, +integer_cst -2147483648: b, +integer_cst 2147483647: b, +statement_list : b, +decl_expr : b, +var_decl var1: b, +modify_expr : b, +indirect_ref : b, +pointer_plus_expr : b, +test13.c: In function 'func5': +test13.c:28:12: warning: Using parameter 'b' without checking for null pointer + *(var1 + b) = 400; + ^ +parm_decl b: b, +pointer_type : b, +integer_type : b, +type_decl int: b, +integer_cst 32: b, +integer_cst -2147483648: b, +integer_cst 2147483647: b, +integer_cst 64: b, +nop_expr : b, +mult_expr : b, +nop_expr : b, +var_decl var1: b, +integer_cst 4: b, +integer_cst 400: b, +block : b, +var_decl var1: b, +function_decl func6: +bind_expr : b, +var_decl var2: b, +test13.c: In function 'func6': +test13.c:33:10: warning: Using parameter 'b' without checking for null pointer + int *var2 = b; + ^ +integer_cst 64: b, +parm_decl b: b, +pointer_type : b, +integer_type : b, +type_decl int: b, +integer_cst 32: b, +integer_cst -2147483648: b, +integer_cst 2147483647: b, +statement_list : b, +decl_expr : b, +var_decl var2: b, +test13.c:33:10: warning: Using parameter 'b' without checking for null pointer +modify_expr : b, +indirect_ref : b, +var_decl var2: b, +test13.c:33:10: warning: Using parameter 'b' without checking for null pointer +integer_cst 500: b, +block : b, +var_decl var2: b, +test13.c:33:10: warning: Using parameter 'b' without checking for null pointer +function_decl func7: +bind_expr : b, +var_decl var3: b, +integer_cst 64: b, +pointer_plus_expr : b, +test13.c: In function 'func7': +test13.c:39:20: warning: Using parameter 'b' without checking for null pointer + int *var3 = 12 + b; + ^ +parm_decl b: b, +pointer_type : b, +integer_type : b, +type_decl int: b, +integer_cst 32: b, +integer_cst -2147483648: b, +integer_cst 2147483647: b, +integer_cst 64: b, +integer_cst 48: b, +pointer_type : b, +integer_type : b, +type_decl int: b, +integer_cst 32: b, +integer_cst -2147483648: b, +integer_cst 2147483647: b, +statement_list : b, +decl_expr : b, +var_decl var3: b, +modify_expr : b, +indirect_ref : b, +var_decl var3: b, +integer_cst 600: b, +block : b, +var_decl var3: b, +function_decl func8: +bind_expr : bptr, +var_decl var4: bptr, +integer_cst 64: bptr, +addr_expr : bptr, +test13.c: In function 'func8': +test13.c:45:18: warning: Using parameter 'bptr' without checking for null pointer + int **var4 = &bptr; + ^ +parm_decl bptr: bptr, +pointer_type : bptr, +integer_type : bptr, +type_decl int: bptr, +integer_cst 32: bptr, +integer_cst -2147483648: bptr, +integer_cst 2147483647: bptr, +integer_cst 64: bptr, +pointer_type : bptr, +pointer_type : bptr, +integer_type : bptr, +type_decl int: bptr, +integer_cst 32: bptr, +integer_cst -2147483648: bptr, +integer_cst 2147483647: bptr, +statement_list : bptr, +decl_expr : bptr, +var_decl var4: bptr, +modify_expr : bptr, +indirect_ref : bptr, +indirect_ref : bptr, +var_decl var4: bptr, +integer_cst 700: bptr, +block : bptr, +var_decl var4: bptr, diff --git a/test/test13.c b/test/test13.c new file mode 100644 index 0000000..320e202 --- /dev/null +++ b/test/test13.c @@ -0,0 +1,47 @@ +void func1(int a, int *b, char c); +void func2(int a, int *b, char c); +void func3(int a, int *b, char c); +void func4(int a, int *b, char c); +void func5(int a, int *b, char c); +void func6(int a, int *b, char c); +void func7(int a, int *b, char c); +void func8(int a, int *b, char c); + +void func1(int a, int *b, char c) +{ + *b = 100; +} + +void func2(int a, int *b, char c) +{ + *(1 + b) = 200; +} + +void func3(int a, int *b, char c) +{ + *(1 + (1 + b)) = 300; +} + +void func5(int a, int *b, char c) +{ + int var1 = 1; + *(var1 + b) = 400; +} + +void func6(int a, int *b, char c) +{ + int *var2 = b; + *var2 = 500; +} + +void func7(int a, int *b, char c) +{ + int *var3 = 12 + b; + *var3 = 600; +} + +void func8(int a, int *bptr, char c) +{ + int **var4 = &bptr; + **var4 = 700; +} |