13573b2c84372d9484296fa658f5276f6c09acb92Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s 2cb67b17f999ff3b77dfbbed46e955ccb14b4869bAnders Carlssontemplate <typename T> 3cb67b17f999ff3b77dfbbed46e955ccb14b4869bAnders Carlssonstruct A { 4cb67b17f999ff3b77dfbbed46e955ccb14b4869bAnders Carlsson char a __attribute__((aligned(16))); 579e8303f24b8cf409b8338a5434ee364bd401094Douglas Gregor 679e8303f24b8cf409b8338a5434ee364bd401094Douglas Gregor struct B { 779e8303f24b8cf409b8338a5434ee364bd401094Douglas Gregor typedef T __attribute__((aligned(16))) i16; 879e8303f24b8cf409b8338a5434ee364bd401094Douglas Gregor i16 x; 979e8303f24b8cf409b8338a5434ee364bd401094Douglas Gregor }; 10cb67b17f999ff3b77dfbbed46e955ccb14b4869bAnders Carlsson}; 11cb67b17f999ff3b77dfbbed46e955ccb14b4869bAnders Carlssonint a[sizeof(A<int>) == 16 ? 1 : -1]; 1279e8303f24b8cf409b8338a5434ee364bd401094Douglas Gregorint a2[sizeof(A<int>::B) == 16 ? 1 : -1]; 13cb67b17f999ff3b77dfbbed46e955ccb14b4869bAnders Carlsson 1465dedc26687385b4fdc094fd51f3776e0a63f479John McCall// rdar://problem/8243419 1565dedc26687385b4fdc094fd51f3776e0a63f479John McCallnamespace test1 { 1665dedc26687385b4fdc094fd51f3776e0a63f479John McCall template <typename T> struct A { 1765dedc26687385b4fdc094fd51f3776e0a63f479John McCall int a; 1865dedc26687385b4fdc094fd51f3776e0a63f479John McCall T b[0]; 1965dedc26687385b4fdc094fd51f3776e0a63f479John McCall } __attribute__((packed)); 2065dedc26687385b4fdc094fd51f3776e0a63f479John McCall 2165dedc26687385b4fdc094fd51f3776e0a63f479John McCall typedef A<unsigned long> type; 2265dedc26687385b4fdc094fd51f3776e0a63f479John McCall 2365dedc26687385b4fdc094fd51f3776e0a63f479John McCall int test0[sizeof(type) == 4 ? 1 : -1]; 2465dedc26687385b4fdc094fd51f3776e0a63f479John McCall int test1[__builtin_offsetof(type, a) == 0 ? 1 : -1]; 2565dedc26687385b4fdc094fd51f3776e0a63f479John McCall int test2[__builtin_offsetof(type, b) == 4 ? 1 : -1]; 2665dedc26687385b4fdc094fd51f3776e0a63f479John McCall} 27