1// { dg-do run }
2
3struct Lower {
4    const int& ref;
5    Lower(const int& ref) : ref(ref) { }
6};
7struct Middle : public virtual Lower {
8    Middle(const int& ref) : Lower(ref) { }
9};
10struct Upper : public Middle {
11    Upper(const int& ref) : Lower(ref), Middle(ref) { }
12    int get() { return ref; }
13};
14extern "C" void abort (void);
15int main()
16{
17  int i = 0;
18  Upper upper(i);
19  if (upper.get() != 0)
20    abort ();
21  return 0;
22}
23