1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // expected-no-diagnostics 3 template <typename T> 4 struct A { 5 char a __attribute__((aligned(16))); 6 7 struct B { 8 typedef T __attribute__((aligned(16))) i16; 9 i16 x; 10 }; 11 }; 12 int a[sizeof(A<int>) == 16 ? 1 : -1]; 13 int a2[sizeof(A<int>::B) == 16 ? 1 : -1]; 14 15 namespace test1 { 16 template <typename T> struct A { 17 int a; 18 T b[0]; 19 } __attribute__((packed)); 20 21 typedef A<unsigned long> type; 22 23 int test0[sizeof(type) == 4 ? 1 : -1]; 24 int test1[__builtin_offsetof(type, a) == 0 ? 1 : -1]; 25 int test2[__builtin_offsetof(type, b) == 4 ? 1 : -1]; 26 } 27 28 namespace test2 { 29 template <class type> 30 struct fastscriptmember { 31 type Member __attribute__ ((packed)); 32 char x; 33 }; 34 int test0[sizeof(fastscriptmember<int>) == 5 ? 1 : -1]; 35 } 36