139092Srnordier// { dg-do run } 239092Srnordiertemplate <class STRUCT, class MEMBER> inline STRUCT * 339092Srnordiersetback(MEMBER *bp, MEMBER STRUCT::*offset) 439092Srnordier{ 539092Srnordier if(!bp) return 0; 639092Srnordier union { int i; MEMBER STRUCT::*of; } u; 739092Srnordier u.of = offset; 839092Srnordier return (STRUCT *) ((__SIZE_TYPE__) bp - u.i); 939092Srnordier} 1039092Srnordier 1139092Srnordier 1239092Srnordierstruct S 1339092Srnordier{ 1439092Srnordier int i; 1539092Srnordier}; 1639092Srnordier 1739092Srnordierint main() 1839092Srnordier{ 1939092Srnordier S s; 2039092Srnordier 2139092Srnordier S* sp = setback (&s.i, &S::i); 2239092Srnordier} 2339092Srnordier