#include #include #include union U { int x[10][10]; int y[10][10]; }; struct U2 { int x[10][10]; }; struct T { union U u[10][10]; struct U2 u2[10][10]; } a[100]; int main() { $mem m = &a; m = &a[(0 .. 90) + (0 .. 9)]; m = &a[0 .. 90] + 9; m = &a[9 + (0 .. 90)]; m = &a[(0 .. 90) + 9]; m = &a[0 .. 98].u[0 + 1]; m = (&a[0] + (0 .. 9)) + (0 .. 9); m = &a[0 .. 9] + (0 .. 9); m = &a[0 .. 99].u[0 .. 9][0 .. 9]; m = &a[0 .. 99].u[0 .. 9][0 .. 9].x[0 .. 9][0 .. 9]; m = &a[0 .. 99].u[0 .. 9][0 .. 9].y[0 .. 9][0 .. 9]; m = &a[0 .. 99].u2[0 .. 9][0 .. 9].x[0 .. 9][0 .. 9]; m = &a[0 .. 99].u2[0 .. 9][0 .. 9]; $assert($equals(&m, &m)); }