2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr82060.C
blob3cea930ae05a9d593caf3f44d0afb88deffa8dfa
1 // { dg-do compile }
3 struct A
5   char a[1]; // must be char array
6 };
8 struct B
10   A& a() { return ma; } // must be accessed through a getter
11   A ma;
14 struct C
16   B& b() { return mb; } // must be accessed through a getter
17   B mb;
20 struct D
22   virtual A getA() = 0; // must be virtual
25 void
26 foo(D& d) // The D object must not be created locally
27           // (so that getA implementation is not known at compile time?)
29   C c;
30   for (;;) // must be in a loop
31     c.b().a() = d.getA();