aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer/store.h
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-08-24 09:33:42 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2020-08-31 16:07:46 -0400
commit0d1b4edc5fff834e8f924b20dd021ded7a21d2d2 (patch)
tree65926af7487d5485acfedf8ed468b9b52073f5fe /gcc/analyzer/store.h
parentecdb93224c56189a129e97c556fe6b78e1b15a63 (diff)
downloadgcc-0d1b4edc5fff834e8f924b20dd021ded7a21d2d2.zip
gcc-0d1b4edc5fff834e8f924b20dd021ded7a21d2d2.tar.gz
gcc-0d1b4edc5fff834e8f924b20dd021ded7a21d2d2.tar.bz2
analyzer: fix ICE on RANGE_EXPR in CONSTRUCTORs [PR96763]
gcc/analyzer/ChangeLog: PR analyzer/96763 * store.cc (binding_map::apply_ctor_to_region): Handle RANGE_EXPR by calling a new binding_map::apply_ctor_val_to_range subroutine. Split out the existing non-CONSTRUCTOR-handling code to a new apply_ctor_pair_to_child_region subroutine. (binding_map::apply_ctor_val_to_range): New. (binding_map::apply_ctor_pair_to_child_region): New, split out from binding_map::apply_ctor_to_region as noted above. * store.h (binding_map::apply_ctor_val_to_range): New decl. (binding_map::apply_ctor_pair_to_child_region): New decl. gcc/testsuite/ChangeLog: PR analyzer/96763 * g++.dg/analyzer/pr96763.C: New test.
Diffstat (limited to 'gcc/analyzer/store.h')
-rw-r--r--gcc/analyzer/store.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/analyzer/store.h b/gcc/analyzer/store.h
index 636a9547..0ac9317 100644
--- a/gcc/analyzer/store.h
+++ b/gcc/analyzer/store.h
@@ -344,6 +344,14 @@ public:
region_model_manager *mgr);
private:
+ void apply_ctor_val_to_range (const region *parent_reg,
+ region_model_manager *mgr,
+ tree min_index, tree max_index,
+ tree val);
+ void apply_ctor_pair_to_child_region (const region *parent_reg,
+ region_model_manager *mgr,
+ tree index, tree val);
+
map_t m_map;
};