1/* PR c/32041 */ 2/* { dg-do run } */ 3 4struct S 5{ 6 int c; 7 struct { float f; } sa[2]; 8}; 9 10char a[__builtin_offsetof (S, sa->f) 11 == __builtin_offsetof (S, sa[0].f) ? 1 : -1]; 12 13template <int N> 14struct T 15{ 16 int c[N]; 17 struct { float f; } sa[N]; 18 static int foo () { return __builtin_offsetof (T, sa->f); } 19 static int bar () { return __builtin_offsetof (T, sa[0].f); } 20}; 21 22char b[__builtin_offsetof (T<5>, sa->f) 23 == __builtin_offsetof (T<5>, sa[0].f) ? 1 : -1]; 24 25int 26main () 27{ 28 if (T<1>::foo () != T<1>::bar ()) 29 __builtin_abort (); 30 if (T<7>::foo () != T<7>::bar ()) 31 __builtin_abort (); 32} 33