analyzer: fix ICE on untracked decl_regions [PR106374]
gcc/analyzer/ChangeLog: PR analyzer/106374 * region.cc (decl_region::get_svalue_for_initializer): Bail out on untracked regions. gcc/testsuite/ChangeLog: PR analyzer/106374 * gcc.dg/analyzer/untracked-2.c: New test. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
This commit is contained in:
parent
e7dfd87445
commit
a6c192e80a
2 changed files with 12 additions and 0 deletions
|
@ -1152,6 +1152,11 @@ decl_region::get_svalue_for_initializer (region_model_manager *mgr) const
|
|||
if (binding->symbolic_p ())
|
||||
return NULL;
|
||||
|
||||
/* If we don't care about tracking the content of this region, then
|
||||
it's unused, and the value doesn't matter. */
|
||||
if (!tracked_p ())
|
||||
return NULL;
|
||||
|
||||
binding_cluster c (this);
|
||||
c.zero_fill_region (mgr->get_store_manager (), this);
|
||||
return mgr->get_or_create_compound_svalue (TREE_TYPE (m_decl),
|
||||
|
|
7
gcc/testsuite/gcc.dg/analyzer/untracked-2.c
Normal file
7
gcc/testsuite/gcc.dg/analyzer/untracked-2.c
Normal file
|
@ -0,0 +1,7 @@
|
|||
typedef unsigned char u8;
|
||||
extern int foo(const u8 *key, unsigned int keylen);
|
||||
int test (void)
|
||||
{
|
||||
static const u8 default_salt[64];
|
||||
return foo(default_salt, 64);
|
||||
}
|
Loading…
Add table
Reference in a new issue