// PR c++/19808
// { dg-do compile { target c++11 } }
// { dg-options "-Wuninitialized -Winit-self" }
// Test that we don't warn when initializing a reference, unless it's
// self-init.
struct R {
  int &r;
};
struct S {
  R r;
  int a;
  int &b;
  int c;
};
struct X {
  S s;
  X() : s{ { s.a }, 1, s.c, 3} { }
};
struct A {
  int &r;
  A() : r{r} { } // { dg-warning ".A::r. is initialized with itself" }
};
struct B {
  int &r;
  int a;
  B() : r{a} { }
};
struct C {
  R x;
  C() : x{x.r} { } // { dg-warning "member .C::x. is used uninitialized" }
};