diff --git a/src/util/pointer_expr.cpp b/src/util/pointer_expr.cpp index 7de79c38a1c..2f3b2e9d8cc 100644 --- a/src/util/pointer_expr.cpp +++ b/src/util/pointer_expr.cpp @@ -61,7 +61,13 @@ static void build_object_descriptor_rec( build_object_descriptor_rec(ns, struct_op, dest); auto offset = member_offset_expr(member, ns); - CHECK_RETURN(offset.has_value()); + if(!offset.has_value()) + { + // Cannot compute offset for structs with non-constant-width members; + // set object to the member expression itself + dest.object() = member; + return; + } dest.offset() = plus_exprt( dest.offset(),