File tree 1 file changed +9
-0
lines changed 1 file changed +9
-0
lines changed Original file line number Diff line number Diff line change @@ -514,6 +514,8 @@ value_set_dereferencet::valuet value_set_dereferencet::build_reference_to(
514
514
const typet &object_type=ns.follow (object.type ());
515
515
const exprt &root_object=o.root_object ();
516
516
const typet &root_object_type=ns.follow (root_object.type ());
517
+
518
+ exprt root_object_subexpression=root_object;
517
519
518
520
if (dereference_type_compare (object_type, dereference_type) &&
519
521
o.offset ().is_zero ())
@@ -573,6 +575,13 @@ value_set_dereferencet::valuet value_set_dereferencet::build_reference_to(
573
575
if (ns.follow (result.value .type ())!=ns.follow (dereference_type))
574
576
result.value .make_typecast (dereference_type);
575
577
}
578
+ else if (get_subexpression_at_offset (root_object_subexpression, o.offset (),
579
+ dereference_type, ns))
580
+ {
581
+ // Successfully found a member, array index, or combination thereof
582
+ // that matches the desired type and offset:
583
+ result.value =root_object_subexpression;
584
+ }
576
585
else
577
586
{
578
587
// we extract something from the root object
You can’t perform that action at this time.
0 commit comments