From ee4044b0a7e19565a15fe86146dd4a7ff70ea2d5 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 13 May 2020 15:41:36 -0400 Subject: [PATCH 128/179] FIXME: various fixes --- gcc/analyzer/region-model2.cc | 9 +++++++-- gcc/analyzer/store2.cc | 11 +++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/gcc/analyzer/region-model2.cc b/gcc/analyzer/region-model2.cc index 7e166f7028f..fece094c820 100644 --- a/gcc/analyzer/region-model2.cc +++ b/gcc/analyzer/region-model2.cc @@ -882,7 +882,10 @@ bool region2::get_bit_size (bit_size_t *out) const { tree type = get_type (); - gcc_assert (type); + + /* Bail out e.g. for heap-allocated regions. */ + if (!type) + return false; HOST_WIDE_INT bytes = int_size_in_bytes (type); if (bytes == -1) @@ -2518,7 +2521,9 @@ string_region2::dump_to_pp (pretty_printer *pp, bool simple) const { pp_string (pp, "string_region2("); dump_tree (pp, m_string_cst); - pp_string (pp, ")"); + pp_string (pp, " ("); + pp_pointer (pp, m_string_cst); + pp_string (pp, "))"); } } diff --git a/gcc/analyzer/store2.cc b/gcc/analyzer/store2.cc index 76a68d86ff6..ec98d9e0d01 100644 --- a/gcc/analyzer/store2.cc +++ b/gcc/analyzer/store2.cc @@ -79,8 +79,6 @@ const binding_key2 * binding_key2::make (store2_manager *mgr, const region2 *r, enum binding_kind kind) { - gcc_assert (r->get_type ()); - region_offset offset = r->get_offset (); if (offset.symbolic_p ()) #if 0 @@ -334,10 +332,11 @@ binding_cluster2::zero_fill_region (store2_manager *mgr, const region2 *reg) region_model2_manager *sval_mgr = mgr->get_svalue2_manager (); tree cst_zero = build_int_cst (integer_type_node, 0); const svalue2 *cst_sval = sval_mgr->get_or_create_constant_svalue2 (cst_zero); - const svalue2 *cast_sval - = sval_mgr->get_or_create_unaryop (reg->get_type (), NOP_EXPR, cst_sval); - // FIXME: will want this to fold redundant casts, I guess; it may do it already - bind (mgr, reg, cast_sval, BK_default); + const svalue2 *bound_sval = cst_sval; + if (reg->get_type ()) + bound_sval = sval_mgr->get_or_create_unaryop (reg->get_type (), NOP_EXPR, + cst_sval); + bind (mgr, reg, bound_sval, BK_default); } /* FIXME. */ -- 2.21.0