brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · fc170b9 Raw
58 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-windows-msvc -fsyntax-only -verify -Wpadded %s2// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -verify -Wpadded %s3 4struct __attribute__((ms_struct)) Foo { // expected-warning {{padding size of 'Foo' with 3 bytes to alignment boundary}}5  int b : 1;6  char a; // expected-warning {{padding struct 'Foo' with 31 bits to align 'a'}}7};8 9struct __attribute__((ms_struct)) AlignedStruct { // expected-warning {{padding size of 'AlignedStruct' with 4 bytes to alignment boundary}}10  char c;11  alignas(8) int i; // expected-warning {{padding struct 'AlignedStruct' with 7 bytes to align 'i'}}12};13 14 15struct Base {16  int b;17};18 19struct Derived : public Base { // expected-warning {{padding size of 'Derived' with 3 bytes to alignment boundary}}20  char c;21};22 23union __attribute__((ms_struct)) Union {24  char c;25  long long u;26};27 28struct __attribute__((ms_struct)) StructWithUnion { // expected-warning {{padding size of 'StructWithUnion' with 6 bytes to alignment boundary}}29  char c;30  int : 0;31  Union t; // expected-warning {{padding struct 'StructWithUnion' with 7 bytes to align 't'}}32  short i;33};34 35struct __attribute__((ms_struct)) EmptyStruct {};36 37struct __attribute__((ms_struct)) AlignedMemberStruct { // expected-warning {{padding size of 'AlignedMemberStruct' with 28 bytes to alignment boundary}}38    alignas(32) int x;39};40 41struct alignas(32) __attribute__((ms_struct)) AlignedNonEmptyStruct { // expected-warning {{padding size of 'AlignedNonEmptyStruct' with 28 bytes to alignment boundary}}42    int x;43};44 45 46struct alignas(16) __attribute__((ms_struct)) AlignedEmptyStruct {}; // expected-warning {{padding size of 'AlignedEmptyStruct' with 15 bytes to alignment boundary}}47 48int main() {49  Foo f;50  AlignedStruct a;51  Derived d;52  StructWithUnion swu;53  EmptyStruct e;54  AlignedNonEmptyStruct anes;55  AlignedMemberStruct ams;56  AlignedEmptyStruct aes;57}58