OSDN Git Service

PR c++/46124
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / torture / pr46149.C
1 // { dg-do run }
2 // { dg-options "-fno-tree-sra" }
3
4 struct S
5 {
6   S ():p ((char *) __builtin_calloc (1, 1))
7   {
8   }
9   char *p;
10 };
11
12 template < class T > struct A
13 {
14   A (const S & __m1, const T & __m2):m1 (__m1), m2 (__m2)
15   {
16   }
17   const S & m1;
18   const T & m2;
19 };
20
21 struct B:A < S >
22 {
23   B (const S & __v):A < S > (__v, __v)
24   {
25   }
26 };
27
28 struct C:A < B >
29 {
30   C (const S & __e1, const B & __e2):A < B > (__e1, __e2)
31   {
32   }
33 };
34
35 struct D
36 {
37   D (const C & __c):c (__c)
38   {
39   }
40   const C c;
41 };
42
43 int
44 main ()
45 {
46   S s;
47   B b (s);
48   C c (s, b);
49   D d (c);
50   return d.c.m2.m2.p[0];
51 }