128 lines · plain
1; REQUIRES: diasdk2 3; RUN: llvm-pdbutil pretty -classes -class-definitions=layout \4; RUN: -include-types=SimplePad %p/Inputs/SimplePaddingTest.pdb > %t5 6; RUN: FileCheck -input-file=%t %s -check-prefix=NO_PADDING7; RUN: FileCheck -input-file=%t %s -check-prefix=UNION8; RUN: FileCheck -input-file=%t %s -check-prefix=NESTED_UNION9; RUN: FileCheck -input-file=%t %s -check-prefix=PAD_FROM_FIELDS110; RUN: FileCheck -input-file=%t %s -check-prefix=PAD_FROM_FIELDS211; RUN: FileCheck -input-file=%t %s -check-prefix=NO_PAD_IN_BASE12; RUN: FileCheck -input-file=%t %s -check-prefix=PAD_IN_DERIVED13; RUN: FileCheck -input-file=%t %s -check-prefix=EMPTY_BASE14; RUN: FileCheck -input-file=%t %s -check-prefix=VFPTR15; RUN: FileCheck -input-file=%t %s -check-prefix=MULTIPLE_INHERIT16; RUN: FileCheck -input-file=%t %s -check-prefix=MULTIPLE_INHERIT217; RUN: FileCheck -input-file=%t %s -check-prefix=DEEP_INHERIT18; RUN: FileCheck -input-file=%t %s -check-prefix=AGGREGATE19 20; NO_PADDING: struct SimplePadNoPadding [sizeof = 8] {21; NO_PADDING-NEXT: data +0x00 [sizeof=4] int X22; NO_PADDING-NEXT: data +0x04 [sizeof=4] int Y23; NO_PADDING-NEXT: }24 25; UNION: struct SimplePadUnion [sizeof = 16] {26; UNION-NEXT: data +0x00 [sizeof=4] int X27; UNION-NEXT: data +0x00 [sizeof=8] __int64 Y28; UNION-NEXT: data +0x00 [sizeof=16] SimplePadUnion::29; UNION-NEXT: data +0x00 [sizeof=4] int X30; UNION-NEXT: <padding> (4 bytes)31; UNION-NEXT: data +0x08 [sizeof=8] __int64 Y32; UNION-NEXT: }33 34; NESTED_UNION: struct {{SimplePadUnion::.*}} [sizeof = 16] {35; NESTED_UNION-NEXT: data +0x00 [sizeof=4] int X36; NESTED_UNION-NEXT: <padding> (4 bytes)37; NESTED_UNION-NEXT: data +0x08 [sizeof=8] __int64 Y38; NESTED_UNION-NEXT: }39 40; PAD_FROM_FIELDS1: struct SimplePadFields1 [sizeof = 4] {41; PAD_FROM_FIELDS1-NEXT: data +0x00 [sizeof=1] char A42; PAD_FROM_FIELDS1-NEXT: data +0x01 [sizeof=1] char B43; PAD_FROM_FIELDS1-NEXT: data +0x02 [sizeof=1] char C44; PAD_FROM_FIELDS1-NEXT: <padding> (1 bytes)45; PAD_FROM_FIELDS1-NEXT: }46 47; PAD_FROM_FIELDS2: struct SimplePadFields2 [sizeof = 8] {48; PAD_FROM_FIELDS2-NEXT: data +0x00 [sizeof=4] int Y49; PAD_FROM_FIELDS2-NEXT: data +0x04 [sizeof=1] char X50; PAD_FROM_FIELDS2-NEXT: <padding> (3 bytes)51; PAD_FROM_FIELDS2-NEXT: }52 53; NO_PAD_IN_BASE: struct SimplePadBase [sizeof = 4] {54; NO_PAD_IN_BASE-NEXT: data +0x00 [sizeof=4] int X55; NO_PAD_IN_BASE-NEXT: }56 57; PAD_IN_DERIVED: struct SimplePadDerived [sizeof = 16]58; PAD_IN_DERIVED-NEXT: : public SimplePadBase {59; PAD_IN_DERIVED-NEXT: base +0x00 [sizeof=4] SimplePadBase60; PAD_IN_DERIVED-NEXT: data +0x00 [sizeof=4] int X61; PAD_IN_DERIVED-NEXT: <padding> (4 bytes)62; PAD_IN_DERIVED-NEXT: data +0x08 [sizeof=8] __int64 Y63; PAD_IN_DERIVED-NEXT: }64 65; EMPTY_BASE: struct SimplePadEmpty [sizeof = 8]66; EMPTY_BASE-NEXT: : public SimplePadEmptyBase167; EMPTY_BASE-NEXT: , public SimplePadEmptyBase2 {68; EMPTY_BASE-NEXT: base +0x00 [sizeof=1] SimplePadEmptyBase169; EMPTY_BASE-NEXT: base +0x01 [sizeof=1] SimplePadEmptyBase270; EMPTY_BASE-NEXT: <padding> (2 bytes)71; EMPTY_BASE-NEXT: data +0x04 [sizeof=4] int X72; EMPTY_BASE-NEXT: }73 74; VFPTR: struct SimplePadVfptr [sizeof = 8] {75; VFPTR-NEXT: vfptr +0x00 [sizeof=4]76; VFPTR-NEXT: data +0x04 [sizeof=4] int X77; VFPTR-NEXT: }78 79; MULTIPLE_INHERIT: struct SimplePadMultiInherit [sizeof = 8]80; MULTIPLE_INHERIT-NEXT: : public NonEmptyBase181; MULTIPLE_INHERIT-NEXT: , public NonEmptyBase2 {82; MULTIPLE_INHERIT-NEXT: base +0x00 [sizeof=1] NonEmptyBase183; MULTIPLE_INHERIT-NEXT: data +0x00 [sizeof=1] bool X84; MULTIPLE_INHERIT-NEXT: base +0x01 [sizeof=1] NonEmptyBase285; MULTIPLE_INHERIT-NEXT: data +0x01 [sizeof=1] bool Y86; MULTIPLE_INHERIT-NEXT: <padding> (2 bytes)87; MULTIPLE_INHERIT-NEXT: data +0x04 [sizeof=4] int X88; MULTIPLE_INHERIT-NEXT: }89 90; MULTIPLE_INHERIT2: SimplePadMultiInherit2 [sizeof = 16]91; MULTIPLE_INHERIT2-NEXT: : public SimplePadFields192; MULTIPLE_INHERIT2-NEXT: , public SimplePadFields2 {93; MULTIPLE_INHERIT2-NEXT: base +0x00 [sizeof=3] SimplePadFields194; MULTIPLE_INHERIT2-NEXT: data +0x00 [sizeof=1] char A95; MULTIPLE_INHERIT2-NEXT: data +0x01 [sizeof=1] char B96; MULTIPLE_INHERIT2-NEXT: data +0x02 [sizeof=1] char C97; MULTIPLE_INHERIT2-NEXT: <padding> (1 bytes)98; MULTIPLE_INHERIT2-NEXT: base +0x04 [sizeof=5] SimplePadFields299; MULTIPLE_INHERIT2-NEXT: data +0x04 [sizeof=4] int Y100; MULTIPLE_INHERIT2-NEXT: data +0x08 [sizeof=1] char X101; MULTIPLE_INHERIT2-NEXT: <padding> (3 bytes)102; MULTIPLE_INHERIT2-NEXT: data +0x0c [sizeof=4] int X103; MULTIPLE_INHERIT2-NEXT: }104 105; DEEP_INHERIT: struct SimplePadTwoLevelInherit [sizeof = 16]106; DEEP_INHERIT-NEXT: : public OneLevelInherit {107; DEEP_INHERIT-NEXT: base +0x00 [sizeof=4] OneLevelInherit108; DEEP_INHERIT-NEXT: base +0x00 [sizeof=1] NonEmptyBase1109; DEEP_INHERIT-NEXT: data +0x00 [sizeof=1] bool X110; DEEP_INHERIT-NEXT: <padding> (1 bytes)111; DEEP_INHERIT-NEXT: data +0x02 [sizeof=2] short Y112; DEEP_INHERIT-NEXT: <padding> (4 bytes)113; DEEP_INHERIT-NEXT: data +0x08 [sizeof=8] __int64 Z114; DEEP_INHERIT-NEXT: }115 116 117; AGGREGATE: struct SimplePadAggregate [sizeof = 12] {118; AGGREGATE-NEXT: data +0x00 [sizeof=1] NonEmptyBase1 X119; AGGREGATE-NEXT: data +0x00 [sizeof=1] bool X120; AGGREGATE-NEXT: <padding> (3 bytes)121; AGGREGATE-NEXT: data +0x04 [sizeof=4] int Y122; AGGREGATE-NEXT: data +0x08 [sizeof=4] SimplePadFields1 Fields123; AGGREGATE-NEXT: data +0x08 [sizeof=1] char A124; AGGREGATE-NEXT: data +0x09 [sizeof=1] char B125; AGGREGATE-NEXT: data +0x0a [sizeof=1] char C126; AGGREGATE-NEXT: <padding> (1 bytes)127; AGGREGATE-NEXT: }128