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