struct Point { int x; int y; }; struct Base1 { int b1; }; struct Base2 { int b2; }; struct DerivedSI : Base1 { int dsi; }; struct DerivedMI : Base1, Base2 { int dmi; }; struct DerivedVI : virtual Base1 { int dvi; }; void Locals() { Point pt = { //$ussa=pt 1, //$ussa=pt[0..4) 2 //$ussa=pt[4..8) }; int i = pt.x; //$ussa=pt[0..4) i = pt.y; //$ussa=pt[4..8) int* p = &pt.x; i = *p; //$ussa=pt[0..4) p = &pt.y; i = *p; //$ussa=pt[4..8) } void PointsTo( int a, //$raw=a Point& b, //$raw=b ussa=*b Point* c, //$raw=c ussa=*c int* d, //$raw=d ussa=*d DerivedSI* e, //$raw=e ussa=*e DerivedMI* f, //$raw=f ussa=*f DerivedVI* g //$raw=g ussa=*g ) { int i = a; //$raw=a i = *&a; //$raw=a i = *(&a + 0); //$raw=a i = b.x; //$raw=b ussa=*b[0..4) i = b.y; //$raw=b ussa=*b[4..8) i = c->x; //$raw=c ussa=*c[0..4) i = c->y; //$raw=c ussa=*c[4..8) i = *d; //$raw=d ussa=*d[0..4) i = *(d + 0); //$raw=d ussa=*d[0..4) i = d[5]; //$raw=d ussa=*d[20..24) i = 5[d]; //$raw=d ussa=*d[20..24) i = d[a]; //$raw=d raw=a ussa=*d[?..?) i = a[d]; //$raw=d raw=a ussa=*d[?..?) int* p = &b.x; //$raw=b i = *p; //$ussa=*b[0..4) p = &b.y; //$raw=b i = *p; //$ussa=*b[4..8) p = &c->x; //$raw=c i = *p; //$ussa=*c[0..4) p = &c->y; //$raw=c i = *p; //$ussa=*c[4..8) p = &d[5]; //$raw=d i = *p; //$ussa=*d[20..24) p = &d[a]; //$raw=d raw=a i = *p; //$ussa=*d[?..?) Point* q = &c[a]; //$raw=c raw=a i = q->x; //$ussa=*c[?..?) i = q->y; //$ussa=*c[?..?) i = e->b1; //$raw=e ussa=*e[0..4) i = e->dsi; //$raw=e ussa=*e[4..8) i = f->b1; //$raw=f ussa=*f[0..4) i = f->b2; //$raw=f ussa=*f[4..8) i = f->dmi; //$raw=f ussa=*f[8..12) i = g->b1; //$raw=g ussa=*g[?..?) i = g->dvi; //$raw=g ussa=*g[8..12) }