União de tipos compatíveis com layout

Veja este código:

struct A {
    short s;
    int i;
};
struct B {
    short s;
    int i;
};

union U {
    A a;
    B b;
};

int fn() {
    U u;
    u.a.i = 1;
    return u.b.i;
}

É garantido quefn() retorna1?

Nota: esta é uma pergunta de acompanhamento paraist.