36 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2// expected-no-diagnostics3template <typename T>4struct A {5 char a __attribute__((aligned(16)));6 7 struct B {8 typedef T __attribute__((aligned(16))) i16;9 i16 x;10 };11};12int a[sizeof(A<int>) == 16 ? 1 : -1];13int a2[sizeof(A<int>::B) == 16 ? 1 : -1];14 15namespace 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 28namespace 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