1295009Sjkim// { dg-do run } 2280297Sjkim// { dg-options "-fno-tree-sra" } 3280297Sjkim 4280297Sjkimstruct S 568651Skris{ 668651Skris S ():p ((char *) __builtin_calloc (1, 1)) 768651Skris { 868651Skris } 968651Skris char *p; 1068651Skris}; 1168651Skris 1268651Skristemplate < class T > struct A 1368651Skris{ 14280297Sjkim A (const S & __m1, const T & __m2):m1 (__m1), m2 (__m2) 1568651Skris { 1668651Skris } 1768651Skris const S & m1; 1868651Skris const T & m2; 1968651Skris}; 2068651Skris 2168651Skrisstruct B:A < S > 2268651Skris{ 2368651Skris B (const S & __v):A < S > (__v, __v) 2468651Skris { 2568651Skris } 2668651Skris}; 2768651Skris 2868651Skrisstruct C:A < B > 2968651Skris{ 3068651Skris C (const S & __e1, const B & __e2):A < B > (__e1, __e2) 3168651Skris { 3268651Skris } 3368651Skris}; 3468651Skris 3568651Skrisstruct D 3668651Skris{ 3768651Skris D (const C & __c):c (__c) 3868651Skris { 3968651Skris } 4068651Skris const C c; 4168651Skris}; 4268651Skris 4368651Skrisint 4468651Skrismain () 4568651Skris{ 4668651Skris S s; 4768651Skris B b (s); 4868651Skris C c (s, b); 4968651Skris D d (c); 5068651Skris return d.c.m2.m2.p[0]; 5168651Skris} 5268651Skris