1*20c4e95bSVladislav Dzhidzhoev // XFAIL: target-windows 246e848a2SMichael Buch // RUN: %clangxx_host -gdwarf -o %t %s 346e848a2SMichael Buch // RUN: %lldb %t \ 446e848a2SMichael Buch // RUN: -o "expr alignof(packed)" \ 546e848a2SMichael Buch // RUN: -o "expr sizeof(packed)" \ 646e848a2SMichael Buch // RUN: -o "expr alignof(packed_and_aligned)" \ 746e848a2SMichael Buch // RUN: -o "expr sizeof(packed_and_aligned)" \ 8ed958445SMichael Buch // RUN: -o "expr alignof(derived)" \ 9ed958445SMichael Buch // RUN: -o "expr sizeof(derived)" \ 1046e848a2SMichael Buch // RUN: -o exit | FileCheck %s 1146e848a2SMichael Buch 1246e848a2SMichael Buch struct __attribute__((packed)) packed { 1346e848a2SMichael Buch int x; 1446e848a2SMichael Buch char y; 1546e848a2SMichael Buch int z; 1646e848a2SMichael Buch } g_packed_struct; 1746e848a2SMichael Buch static_assert(alignof(packed) == 1); 1846e848a2SMichael Buch static_assert(sizeof(packed) == 9); 1946e848a2SMichael Buch 20ed958445SMichael Buch // CHECK: (lldb) expr alignof(packed) 21ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 1 22ed958445SMichael Buch // CHECK: (lldb) expr sizeof(packed) 23ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 9 24ed958445SMichael Buch 2546e848a2SMichael Buch struct __attribute__((packed, aligned(16))) packed_and_aligned { 2646e848a2SMichael Buch int x; 2746e848a2SMichael Buch char y; 2846e848a2SMichael Buch int z; 2946e848a2SMichael Buch } g_packed_and_aligned_struct; 3046e848a2SMichael Buch static_assert(alignof(packed_and_aligned) == 16); 3146e848a2SMichael Buch static_assert(sizeof(packed_and_aligned) == 16); 3246e848a2SMichael Buch 33ed958445SMichael Buch // CHECK: (lldb) expr alignof(packed_and_aligned) 34ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 16 35ed958445SMichael Buch // CHECK: (lldb) expr sizeof(packed_and_aligned) 36ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 16 37ed958445SMichael Buch 38ed958445SMichael Buch struct __attribute__((packed)) packed_base { int x; }; 39ed958445SMichael Buch static_assert(alignof(packed_base) == 1); 40ed958445SMichael Buch 41ed958445SMichael Buch struct derived : packed, packed_base {} g_derived; 42ed958445SMichael Buch static_assert(alignof(derived) == 1); 43ed958445SMichael Buch static_assert(sizeof(derived) == 13); 44ed958445SMichael Buch 45ed958445SMichael Buch // CHECK: (lldb) expr alignof(derived) 46ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 1 47ed958445SMichael Buch // CHECK: (lldb) expr sizeof(derived) 48ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 13 49ed958445SMichael Buch 5046e848a2SMichael Buch int main() {} 51