aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer/ChangeLog
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-03-06 10:13:59 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2020-03-06 16:40:08 -0500
commit90f7c3007d58c5cb538d00351c038f3f2cfcaf67 (patch)
treefba68bd8f9bde2e35b792de9f1839fb073d08c8e /gcc/analyzer/ChangeLog
parent41f99ba6c576b84ca0f2de7d66ebc087454e93cf (diff)
analyzer: improvements to region_model::get_representative_tree
This patch extends region_model::get_representative_tree so that dumps are able to refer to string literals, which I've found useful in investigating a state-bloat issue. Doing so uncovered a bug in the handling of views I introduced in r10-7024-ge516294a1acb28aaaad44cfd583cc6a80354044e where the code was erroneously using TREE_TYPE on the view region's type, rather than just using its type, which the patch also fixes. gcc/analyzer/ChangeLog: * analyzer.h (class array_region): New forward decl. * program-state.cc (selftest::test_program_state_dumping_2): New. (selftest::analyzer_program_state_cc_tests): Call it. * region-model.cc (array_region::constant_from_key): New. (region_model::get_representative_tree): Handle region_svalue by generating an ADDR_EXPR. (region_model::get_representative_path_var): In view handling, remove erroneous TREE_TYPE when determining the type of the tree. Handle array regions and STRING_CST. (selftest::assert_dump_tree_eq): New. (ASSERT_DUMP_TREE_EQ): New macro. (selftest::test_get_representative_tree): New selftest. (selftest::analyzer_region_model_cc_tests): Call it. * region-model.h (region::dyn_cast_array_region): New vfunc. (array_region::dyn_cast_array_region): New vfunc implementation. (array_region::constant_from_key): New decl. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/malloc-4.c: Update expected output of leak to reflect fix to region_model::get_representative_path_var, adding the missing "*" from the cast.
Diffstat (limited to 'gcc/analyzer/ChangeLog')
-rw-r--r--gcc/analyzer/ChangeLog19
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 84c619e40c4..e51a1cdf56a 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,5 +1,24 @@
2020-03-06 David Malcolm <dmalcolm@redhat.com>
+ * analyzer.h (class array_region): New forward decl.
+ * program-state.cc (selftest::test_program_state_dumping_2): New.
+ (selftest::analyzer_program_state_cc_tests): Call it.
+ * region-model.cc (array_region::constant_from_key): New.
+ (region_model::get_representative_tree): Handle region_svalue by
+ generating an ADDR_EXPR.
+ (region_model::get_representative_path_var): In view handling,
+ remove erroneous TREE_TYPE when determining the type of the tree.
+ Handle array regions and STRING_CST.
+ (selftest::assert_dump_tree_eq): New.
+ (ASSERT_DUMP_TREE_EQ): New macro.
+ (selftest::test_get_representative_tree): New selftest.
+ (selftest::analyzer_region_model_cc_tests): Call it.
+ * region-model.h (region::dyn_cast_array_region): New vfunc.
+ (array_region::dyn_cast_array_region): New vfunc implementation.
+ (array_region::constant_from_key): New decl.
+
+2020-03-06 David Malcolm <dmalcolm@redhat.com>
+
* analyzer.h (dump_quoted_tree): New decl.
* engine.cc (exploded_node::dump_dot): Pass region model to
sm_state_map::print.