diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-02-03 08:30:54 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-02-03 14:25:39 -0500 |
commit | 5e10b9a28be9061b9b0c4aa3cfabe6d478e444e0 (patch) | |
tree | dd74ee22c20285a36ad3bfc616203215aecf9563 /gcc/analyzer/supergraph.cc | |
parent | 287ccd3bd6b92f11ec90c52ffccb764aacfadb89 (diff) | |
download | gcc-5e10b9a28be9061b9b0c4aa3cfabe6d478e444e0.zip gcc-5e10b9a28be9061b9b0c4aa3cfabe6d478e444e0.tar.gz gcc-5e10b9a28be9061b9b0c4aa3cfabe6d478e444e0.tar.bz2 |
analyzer: fix ICE merging models containing label pointers (PR 93546)
PR analyzer/93546 reports an ICE within region_model::add_region_for_type
when merging two region_models each containing a label pointer. The
two labels are stored as pointers to symbolic_regions, but these regions
were created with NULL type, leading to an assertion failure when a
merged copy is created.
The labels themselves have void (but not NULL) type.
This patch updates make_region_for_type to use the type of the decl when
creating such regions, rather than implicitly setting the region's type
to NULL, fixing the ICE.
gcc/analyzer/ChangeLog:
PR analyzer/93546
* region-model.cc (region_model::on_call_pre): Update for new
param of symbolic_region ctor.
(region_model::deref_rvalue): Likewise.
(region_model::add_new_malloc_region): Likewise.
(make_region_for_type): Likewise, preserving type.
* region-model.h (symbolic_region::symbolic_region): Add "type"
param and pass it to base class ctor.
gcc/testsuite/ChangeLog:
PR analyzer/93546
* gcc.dg/analyzer/pr93546.c: New test.
Diffstat (limited to 'gcc/analyzer/supergraph.cc')
0 files changed, 0 insertions, 0 deletions