1 // PR c++/70393
2 // { dg-do run { target c++11 } }
3 
4 /* 'ab' has a static initializer, but we flubbed the initializer,
5    because of B being the primary base.  */
6 
7 struct A
8 {
9   int a = 1;
10 };
11 
12 struct B
13 {
14   B *element = (B*)2;
15 
16     virtual int vfunc() = 0;
17 
call_elementB18     int call_element()
19     {
20       return element->vfunc();
21     }
22 
set_elementB23     void set_element()
24     {
25       element = this;
26     }
27 };
28 
29 struct AB : public A, public B
30 {
vfuncAB31     int vfunc()
32     {
33       return 0;
34     }
35 };
36 
37 static AB ab;
38 
main()39 int main()
40 {
41   if (ab.a != 1)
42     return 1;
43   if (ab.element != (void*)2)
44     return 2;
45 
46   ab.set_element();
47   return ab.call_element();
48 }
49 
50