void abort(void);
void exit(int);

union u {
    struct {
        int i1, i2;
    } t;
    double d;
} x[2], v;

void
    f(x, v) union u *x,
    v;
{
    *++x = v;
}

int main(void) {
    x[1].t.i1 = x[1].t.i2 = 0;
    v.t.i1 = 1;
    v.t.i2 = 2;
    f(x, v);
    if (x[1].t.i1 != 1 || x[1].t.i2 != 2)
        abort();
    exit(0);
}
