| // RUN: %clang_cc1 -triple x86_64-windows-msvc -fsyntax-only -verify -Wpadded %s |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -verify -Wpadded %s |
| |
| struct __attribute__((ms_struct)) Foo { // expected-warning {{padding size of 'Foo' with 3 bytes to alignment boundary}} |
| int b : 1; |
| char a; // expected-warning {{padding struct 'Foo' with 31 bits to align 'a'}} |
| }; |
| |
| struct __attribute__((ms_struct)) AlignedStruct { // expected-warning {{padding size of 'AlignedStruct' with 4 bytes to alignment boundary}} |
| char c; |
| alignas(8) int i; // expected-warning {{padding struct 'AlignedStruct' with 7 bytes to align 'i'}} |
| }; |
| |
| |
| struct Base { |
| int b; |
| }; |
| |
| struct Derived : public Base { // expected-warning {{padding size of 'Derived' with 3 bytes to alignment boundary}} |
| char c; |
| }; |
| |
| union __attribute__((ms_struct)) Union { |
| char c; |
| long long u; |
| }; |
| |
| struct __attribute__((ms_struct)) StructWithUnion { // expected-warning {{padding size of 'StructWithUnion' with 6 bytes to alignment boundary}} |
| char c; |
| int : 0; |
| Union t; // expected-warning {{padding struct 'StructWithUnion' with 7 bytes to align 't'}} |
| short i; |
| }; |
| |
| struct __attribute__((ms_struct)) EmptyStruct {}; |
| |
| struct __attribute__((ms_struct)) AlignedMemberStruct { // expected-warning {{padding size of 'AlignedMemberStruct' with 28 bytes to alignment boundary}} |
| alignas(32) int x; |
| }; |
| |
| struct alignas(32) __attribute__((ms_struct)) AlignedNonEmptyStruct { // expected-warning {{padding size of 'AlignedNonEmptyStruct' with 28 bytes to alignment boundary}} |
| int x; |
| }; |
| |
| |
| struct alignas(16) __attribute__((ms_struct)) AlignedEmptyStruct {}; // expected-warning {{padding size of 'AlignedEmptyStruct' with 15 bytes to alignment boundary}} |
| |
| int main() { |
| Foo f; |
| AlignedStruct a; |
| Derived d; |
| StructWithUnion swu; |
| EmptyStruct e; |
| AlignedNonEmptyStruct anes; |
| AlignedMemberStruct ams; |
| AlignedEmptyStruct aes; |
| } |