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