diff --git a/src/pointer-analysis/value_set_dereference.cpp b/src/pointer-analysis/value_set_dereference.cpp index b79b2f926ee..e8f0c8f159d 100644 --- a/src/pointer-analysis/value_set_dereference.cpp +++ b/src/pointer-analysis/value_set_dereference.cpp @@ -280,6 +280,13 @@ bool value_set_dereferencet::dereference_type_compare( to_struct_type(ot_base))) return true; // ok, dt is a prefix of ot } + + if(ot_base.id()==ID_struct) + { + const auto& otcomp = to_struct_type(ot_base).components(); + if(otcomp.size()!=0 && dereference_type_compare(otcomp[0].type(),dereference_type)) + return true; // dt is a prefix (specifically the first field) of ot + } // we are generous about code pointers if(dereference_type.id()==ID_code &&