This patch fixes a bug where clang doesn’t reject union fields of non-trivial struct types:
struct S0 {
  id x;
};
struct S1 {
  id y;
};
union U0 {
  struct S0 s0;  // no diagnostics.
  struct S1 s1;  // no diagnostics.
};
union U1 {
  id x;  // clang rejects ObjC pointer fields in unions.
};
void test(union U0 a) {
  // Both ‘S0::x’ and ‘S1::y' are destructed in the IR.
}rdar://problem/46677858