1*ed958445SMichael Buch // XFAIL: * 2*ed958445SMichael Buch // 3*ed958445SMichael Buch // RUN: %clangxx_host -gdwarf -o %t %s 4*ed958445SMichael Buch // RUN: %lldb %t \ 5*ed958445SMichael Buch // RUN: -o "expr alignof(base)" \ 6*ed958445SMichael Buch // RUN: -o "expr alignof(packed_base)" \ 7*ed958445SMichael Buch // RUN: -o "expr alignof(derived)" \ 8*ed958445SMichael Buch // RUN: -o "expr sizeof(derived)" \ 9*ed958445SMichael Buch // RUN: -o exit | FileCheck %s 10*ed958445SMichael Buch 11*ed958445SMichael Buch struct __attribute__((packed)) packed { 12*ed958445SMichael Buch int x; 13*ed958445SMichael Buch char y; 14*ed958445SMichael Buch int z; 15*ed958445SMichael Buch } g_packed_struct; 16*ed958445SMichael Buch 17*ed958445SMichael Buch // LLDB incorrectly calculates alignof(base) 18*ed958445SMichael Buch struct foo {}; 19*ed958445SMichael Buch struct base : foo { int x; }; 20*ed958445SMichael Buch static_assert(alignof(base) == 4); 21*ed958445SMichael Buch 22*ed958445SMichael Buch // CHECK: (lldb) expr alignof(base) 23*ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 4 24*ed958445SMichael Buch 25*ed958445SMichael Buch // LLDB incorrectly calculates alignof(packed_base) 26*ed958445SMichael Buch struct __attribute__((packed)) packed_base { int x; }; 27*ed958445SMichael Buch static_assert(alignof(packed_base) == 1); 28*ed958445SMichael Buch 29*ed958445SMichael Buch // CHECK: (lldb) expr alignof(packed_base) 30*ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 1 31*ed958445SMichael Buch 32*ed958445SMichael Buch struct derived : packed, packed_base { 33*ed958445SMichael Buch short s; 34*ed958445SMichael Buch } g_derived; 35*ed958445SMichael Buch static_assert(alignof(derived) == 2); 36*ed958445SMichael Buch static_assert(sizeof(derived) == 16); 37*ed958445SMichael Buch 38*ed958445SMichael Buch // CHECK: (lldb) expr alignof(derived) 39*ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 2 40*ed958445SMichael Buch // CHECK: (lldb) expr sizeof(derived) 41*ed958445SMichael Buch // CHECK-NEXT: ${{.*}} = 16 42*ed958445SMichael Buch main()43*ed958445SMichael Buchint main() {} 44