// RUN: %clang_cc1 %s -fsyntax-only -verify
// PR5543

struct A { int x; union { int* y; float* z; }; }; struct B : A {int a;};
int* a(B* x) { return x->y; }

struct x { union { int y; }; }; x y; template <int X> int f() { return X+y.y; }
int g() { return f<2>(); }

