From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2209) id C9C7438346A4; Thu, 21 Jul 2022 01:39:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C9C7438346A4 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: David Malcolm To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-1773] analyzer: fix ICE on untracked decl_regions [PR106374] X-Act-Checkin: gcc X-Git-Author: David Malcolm X-Git-Refname: refs/heads/master X-Git-Oldrev: e7dfd8744502d6588483ec63ab7f81c2f5940267 X-Git-Newrev: a6c192e80a87efbe6c0641f25a963c7bee9990fb Message-Id: <20220721013920.C9C7438346A4@sourceware.org> Date: Thu, 21 Jul 2022 01:39:20 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2022 01:39:20 -0000 https://gcc.gnu.org/g:a6c192e80a87efbe6c0641f25a963c7bee9990fb commit r13-1773-ga6c192e80a87efbe6c0641f25a963c7bee9990fb Author: David Malcolm Date: Wed Jul 20 21:34:03 2022 -0400 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 Diff: --- gcc/analyzer/region.cc | 5 +++++ gcc/testsuite/gcc.dg/analyzer/untracked-2.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/gcc/analyzer/region.cc b/gcc/analyzer/region.cc index a8d1ae92deb..b78bf4ec1b7 100644 --- a/gcc/analyzer/region.cc +++ b/gcc/analyzer/region.cc @@ -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), diff --git a/gcc/testsuite/gcc.dg/analyzer/untracked-2.c b/gcc/testsuite/gcc.dg/analyzer/untracked-2.c new file mode 100644 index 00000000000..565a9ccd58e --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/untracked-2.c @@ -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); +}