https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104274
--- Comment #4 from David Malcolm <dmalcolm at gcc dot gnu.org> --- This patch seems to fix it, but I'm not yet sure if it's the correct fix. diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc index f8f19769258..9b42e9e983d 100644 --- a/gcc/analyzer/region-model.cc +++ b/gcc/analyzer/region-model.cc @@ -843,6 +843,10 @@ region_model::check_for_poison (const svalue *sval, if (const poisoned_svalue *poisoned_sval = sval->dyn_cast_poisoned_svalue ()) { + /* Ignore empty types. */ + if (sval->get_type () && is_empty_type (sval->get_type ())) + return sval; + /* If we have an SSA name for a temporary, we don't want to print '<unknown>'. Poisoned values are shared by type, and so we can't reconstruct