| // { dg-do run } | |
| // { dg-options "-fno-tree-sra" } | |
| struct S | |
| { | |
| S ():p ((char *) __builtin_calloc (1, 1)) | |
| { | |
| } | |
| char *p; | |
| }; | |
| template < class T > struct A | |
| { | |
| A (const S & __m1, const T & __m2):m1 (__m1), m2 (__m2) | |
| { | |
| } | |
| const S & m1; | |
| const T & m2; | |
| }; | |
| struct B:A < S > | |
| { | |
| B (const S & __v):A < S > (__v, __v) | |
| { | |
| } | |
| }; | |
| struct C:A < B > | |
| { | |
| C (const S & __e1, const B & __e2):A < B > (__e1, __e2) | |
| { | |
| } | |
| }; | |
| struct D | |
| { | |
| D (const C & __c):c (__c) | |
| { | |
| } | |
| const C c; | |
| }; | |
| int | |
| main () | |
| { | |
| S s; | |
| B b (s); | |
| C c (s, b); | |
| D d (c); | |
| return d.c.m2.m2.p[0]; | |
| } |