1024 lines · plain
1; RUN: llc < %s -filetype=obj | llvm-readobj - --codeview | FileCheck %s2; RUN: llc < %s | llvm-mc -filetype=obj --triple=x86_64-windows | llvm-readobj - --codeview | FileCheck %s3; RUN: llc < %s | FileCheck %s --check-prefix=ASM-INLINE-COMMENTS4;5; Same as above, with experimental debuginfo iterators.6;7; Command to generate function-options.ll8; $ clang++ class-options-common.cpp -S -emit-llvm -g -gcodeview -o class-options-common.ll9 10 11 12; // Basically, there are two Property (class-options) expectations on each type:13; // One for class forwarding reference, the other for class definition.14; 15; #define DEFINE_FUNCTION(T) \16; T Func_##T(T &arg) { return arg; };17; 18; class EmptyClass {}; // Expect: CO = ForwardReference | HasUniqueName19; // Expect: CO = HasUniqueName20; DEFINE_FUNCTION(EmptyClass);21; 22; class ExplicitCtorClass { // Expect CO = ForwardReference | HasUniqueName23; // Expect CO = HasConstructorOrDestructor | HasUniqueName24; public:25; explicit ExplicitCtorClass();26; };27; DEFINE_FUNCTION(ExplicitCtorClass);28; 29; class DefaultedCtorClass { // Expect: CO = ForwardReference | HasUniqueName30; // Expect: CO = HasUniqueName31; public:32; DefaultedCtorClass() = default;33; };34; DEFINE_FUNCTION(DefaultedCtorClass);35; 36; class DefaultArgumentCtorClass { // Expect: CO = ForwardReference | HasUniqueName37; // Expect: CO = HasConstructorOrDestructor | HasUniqueName38; public:39; DefaultArgumentCtorClass(int x = 0);40; };41; DEFINE_FUNCTION(DefaultArgumentCtorClass);42; 43; class UserDtorClass { // Expect: CO = ForwardReference | HasUniqueName44; // Expect: CO = HasConstructorOrDestructor| HasUniqueName45; public:46; ~UserDtorClass() {}47; };48; DEFINE_FUNCTION(UserDtorClass);49; 50; class DefaultedDtorClass { // Expect: CO = ForwardReference | HasUniqueName51; // Expect: CO = HasUniqueName52; public:53; ~DefaultedDtorClass() = default;54; };55; DEFINE_FUNCTION(DefaultedDtorClass);56; 57; class AClass : public ExplicitCtorClass { // Expect: CO = ForwardReference | HasUniqueName58; // Expect: CO = HasConstructorOrDestructor | HasUniqueName59; };60; DEFINE_FUNCTION(AClass);61; 62; class BClass { static int x; }; // Expect: CO = ForwardReference | HasUniqueName63; // Expect: CO = HasUniqueName64; DEFINE_FUNCTION(BClass);65; 66; struct Foo { // Expect: CO = ForwardReference | HasUniqueName67; // Expect: CO = HasUniqueName68; Foo() = default;69; Foo(const Foo &o) = default;70; int m;71; } f;72; 73; struct Bar { // Expect: CO = ForwardReference | HasUniqueName74; // Expect: CO = HasConstructorOrDestructor | HasUniqueName75; int m = 0;76; } b;77; 78; struct AStruct {}; // Expect: CO = ForwardReference | HasUniqueName79; // Expect: CO = HasUniqueName80; DEFINE_FUNCTION(AStruct);81; 82; struct BStruct { BStruct(); }; // Expect: CO = ForwardReference | HasUniqueName83; // Expect: CO = HasConstructorOrDestructor | HasUniqueName84; DEFINE_FUNCTION(BStruct);85; 86; void S() {87; struct ComplexStruct { // Expect: CO = ForwardReference | HasUniqueName | Scoped88; // Expect: CO = ContainsNestedClass | HasConstructorOrDestructor | HasUniqueName | Scoped89; 90; 91; struct S {}; // Expect: CO = ForwardReference | HasUniqueName | Nested | Scoped92; // Expect: CO = HasUniqueName | Nested | Scoped93; 94; S s;95; };96; ComplexStruct s;97; }98; 99; union AUnion {}; // Expect: CO = ForwardReference | HasUniqueName100; // Expect: CO = HasUniqueName | Sealed101; DEFINE_FUNCTION(AUnion);102;103; union BUnion { BUnion() = default; }; // Expect: CO = ForwardReference | HasUniqueName104; // Expect: CO = HasUniqueName | Sealed105; DEFINE_FUNCTION(BUnion);106;107; void U() {108; union ComplexUnion { // Note clang not yiled 'HasUniqueName' for this type, but MSVC does.109; // Expect: CO = ForwardReference | Scoped110; // Expect: CO = ContainsNestedClass | Scoped | Sealed111; 112; union NestedUnion { int x; }; // Note clang not yiled 'HasUniqueName' for this type, but MSVC does.113; // Expect: CO = ForwardReference | Nested | Scoped114; // Expect: CO = Nested | Scoped | Sealed115; NestedUnion a;116; int b;117; };118; ComplexUnion c;119; }120 121 122 123; CHECK: Format: COFF-x86-64124; CHECK: Arch: x86_64125; CHECK: AddressSize: 64bit126; CHECK: CodeViewTypes [127; CHECK: Section: .debug$T ({{.*}})128; CHECK: Magic: 0x4129 130 131; CHECK: Class (0x{{.*}}) {132; CHECK: TypeLeafKind: LF_CLASS (0x1504)133; CHECK: MemberCount: 0134; CHECK: Properties [ (0x280)135; CHECK: ForwardReference (0x80)136; CHECK: HasUniqueName (0x200)137; CHECK: ]138; CHECK: FieldList: 0x0139; CHECK: DerivedFrom: 0x0140; CHECK: VShape: 0x0141; CHECK: SizeOf: 0142; CHECK: Name: EmptyClass143; CHECK: LinkageName: .?AVEmptyClass@@144; CHECK: }145; CHECK: Class (0x{{.*}}) {146; CHECK: TypeLeafKind: LF_CLASS (0x1504)147; CHECK: MemberCount: 0148; CHECK: Properties [ (0x200)149; CHECK: HasUniqueName (0x200)150; CHECK: ]151; CHECK: FieldList: <field list> (0x{{.*}})152; CHECK: DerivedFrom: 0x0153; CHECK: VShape: 0x0154; CHECK: SizeOf: 1155; CHECK: Name: EmptyClass156; CHECK: LinkageName: .?AVEmptyClass@@157; CHECK: }158 159 160; CHECK: Class (0x{{.*}}) {161; CHECK: TypeLeafKind: LF_CLASS (0x1504)162; CHECK: MemberCount: 0163; CHECK: Properties [ (0x280)164; CHECK: ForwardReference (0x80)165; CHECK: HasUniqueName (0x200)166; CHECK: ]167; CHECK: FieldList: 0x0168; CHECK: DerivedFrom: 0x0169; CHECK: VShape: 0x0170; CHECK: SizeOf: 0171; CHECK: Name: ExplicitCtorClass172; CHECK: LinkageName: .?AVExplicitCtorClass@@173; CHECK: }174; CHECK: Class (0x{{.*}}) {175; CHECK: TypeLeafKind: LF_CLASS (0x1504)176; CHECK: MemberCount: 1177; CHECK: Properties [ (0x202)178; CHECK: HasConstructorOrDestructor (0x2)179; CHECK: HasUniqueName (0x200)180; CHECK: ]181; CHECK: FieldList: <field list> (0x{{.*}})182; CHECK: DerivedFrom: 0x0183; CHECK: VShape: 0x0184; CHECK: SizeOf: 1185; CHECK: Name: ExplicitCtorClass186; CHECK: LinkageName: .?AVExplicitCtorClass@@187; CHECK: }188 189 190; CHECK: Class (0x{{.*}}) {191; CHECK: TypeLeafKind: LF_CLASS (0x1504)192; CHECK: MemberCount: 0193; CHECK: Properties [ (0x280)194; CHECK: ForwardReference (0x80)195; CHECK: HasUniqueName (0x200)196; CHECK: ]197; CHECK: FieldList: 0x0198; CHECK: DerivedFrom: 0x0199; CHECK: VShape: 0x0200; CHECK: SizeOf: 0201; CHECK: Name: DefaultedCtorClass202; CHECK: LinkageName: .?AVDefaultedCtorClass@@203; CHECK: }204; CHECK: Class (0x{{.*}}) {205; CHECK: TypeLeafKind: LF_CLASS (0x1504)206; CHECK: MemberCount: 1207; CHECK: Properties [ (0x200)208; CHECK: HasUniqueName (0x200)209; CHECK: ]210; CHECK: FieldList: <field list> (0x{{.*}})211; CHECK: DerivedFrom: 0x0212; CHECK: VShape: 0x0213; CHECK: SizeOf: 1214; CHECK: Name: DefaultedCtorClass215; CHECK: LinkageName: .?AVDefaultedCtorClass@@216; CHECK: }217 218 219; CHECK: Class (0x{{.*}}) {220; CHECK: TypeLeafKind: LF_CLASS (0x1504)221; CHECK: MemberCount: 0222; CHECK: Properties [ (0x280)223; CHECK: ForwardReference (0x80)224; CHECK: HasUniqueName (0x200)225; CHECK: ]226; CHECK: FieldList: 0x0227; CHECK: DerivedFrom: 0x0228; CHECK: VShape: 0x0229; CHECK: SizeOf: 0230; CHECK: Name: DefaultArgumentCtorClass231; CHECK: LinkageName: .?AVDefaultArgumentCtorClass@@232; CHECK: }233; CHECK: Class (0x{{.*}}) {234; CHECK: TypeLeafKind: LF_CLASS (0x1504)235; CHECK: MemberCount: 1236; CHECK: Properties [ (0x202)237; CHECK: HasConstructorOrDestructor (0x2)238; CHECK: HasUniqueName (0x200)239; CHECK: ]240; CHECK: FieldList: <field list> (0x{{.*}})241; CHECK: DerivedFrom: 0x0242; CHECK: VShape: 0x0243; CHECK: SizeOf: 1244; CHECK: Name: DefaultArgumentCtorClass245; CHECK: LinkageName: .?AVDefaultArgumentCtorClass@@246; CHECK: }247 248 249; CHECK: Class (0x{{.*}}) {250; CHECK: TypeLeafKind: LF_CLASS (0x1504)251; CHECK: MemberCount: 0252; CHECK: Properties [ (0x280)253; CHECK: ForwardReference (0x80)254; CHECK: HasUniqueName (0x200)255; CHECK: ]256; CHECK: FieldList: 0x0257; CHECK: DerivedFrom: 0x0258; CHECK: VShape: 0x0259; CHECK: SizeOf: 0260; CHECK: Name: UserDtorClass261; CHECK: LinkageName: .?AVUserDtorClass@@262; CHECK: }263; CHECK: Class (0x{{.*}}) {264; CHECK: TypeLeafKind: LF_CLASS (0x1504)265; CHECK: MemberCount: 1266; CHECK: Properties [ (0x202)267; CHECK: HasConstructorOrDestructor (0x2)268; CHECK: HasUniqueName (0x200)269; CHECK: ]270; CHECK: FieldList: <field list> (0x{{.*}})271; CHECK: DerivedFrom: 0x0272; CHECK: VShape: 0x0273; CHECK: SizeOf: 1274; CHECK: Name: UserDtorClass275; CHECK: LinkageName: .?AVUserDtorClass@@276; CHECK: }277 278 279; CHECK: Class (0x{{.*}}) {280; CHECK: TypeLeafKind: LF_CLASS (0x1504)281; CHECK: MemberCount: 0282; CHECK: Properties [ (0x280)283; CHECK: ForwardReference (0x80)284; CHECK: HasUniqueName (0x200)285; CHECK: ]286; CHECK: FieldList: 0x0287; CHECK: DerivedFrom: 0x0288; CHECK: VShape: 0x0289; CHECK: SizeOf: 0290; CHECK: Name: DefaultedDtorClass291; CHECK: LinkageName: .?AVDefaultedDtorClass@@292; CHECK: }293; CHECK: Class (0x{{.*}}) {294; CHECK: TypeLeafKind: LF_CLASS (0x1504)295; CHECK: MemberCount: 1296; CHECK: Properties [ (0x200)297; CHECK: HasUniqueName (0x200)298; CHECK: ]299; CHECK: FieldList: <field list> (0x{{.*}})300; CHECK: DerivedFrom: 0x0301; CHECK: VShape: 0x0302; CHECK: SizeOf: 1303; CHECK: Name: DefaultedDtorClass304; CHECK: LinkageName: .?AVDefaultedDtorClass@@305; CHECK: }306 307 308; CHECK: Class (0x{{.*}}) {309; CHECK: TypeLeafKind: LF_CLASS (0x1504)310; CHECK: MemberCount: 0311; CHECK: Properties [ (0x280)312; CHECK: ForwardReference (0x80)313; CHECK: HasUniqueName (0x200)314; CHECK: ]315; CHECK: FieldList: 0x0316; CHECK: DerivedFrom: 0x0317; CHECK: VShape: 0x0318; CHECK: SizeOf: 0319; CHECK: Name: AClass320; CHECK: LinkageName: .?AVAClass@@321; CHECK: }322; CHECK: Class (0x{{.*}}) {323; CHECK: TypeLeafKind: LF_CLASS (0x1504)324; CHECK: MemberCount: 1325; CHECK: Properties [ (0x202)326; CHECK: HasConstructorOrDestructor (0x2)327; CHECK: HasUniqueName (0x200)328; CHECK: ]329; CHECK: FieldList: <field list> (0x{{.*}})330; CHECK: DerivedFrom: 0x0331; CHECK: VShape: 0x0332; CHECK: SizeOf: 1333; CHECK: Name: AClass334; CHECK: LinkageName: .?AVAClass@@335; CHECK: }336 337 338; CHECK: Class (0x{{.*}}) {339; CHECK: TypeLeafKind: LF_CLASS (0x1504)340; CHECK: MemberCount: 0341; CHECK: Properties [ (0x280)342; CHECK: ForwardReference (0x80)343; CHECK: HasUniqueName (0x200)344; CHECK: ]345; CHECK: FieldList: 0x0346; CHECK: DerivedFrom: 0x0347; CHECK: VShape: 0x0348; CHECK: SizeOf: 0349; CHECK: Name: BClass350; CHECK: LinkageName: .?AVBClass@@351; CHECK: }352; CHECK: Class (0x{{.*}}) {353; CHECK: TypeLeafKind: LF_CLASS (0x1504)354; CHECK: MemberCount: 1355; CHECK: Properties [ (0x200)356; CHECK: HasUniqueName (0x200)357; CHECK: ]358; CHECK: FieldList: <field list> (0x{{.*}})359; CHECK: DerivedFrom: 0x0360; CHECK: VShape: 0x0361; CHECK: SizeOf: 1362; CHECK: Name: BClass363; CHECK: LinkageName: .?AVBClass@@364; CHECK: }365 366 367; CHECK: Struct (0x{{.*}}) {368; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)369; CHECK: MemberCount: 0370; CHECK: Properties [ (0x280)371; CHECK: ForwardReference (0x80)372; CHECK: HasUniqueName (0x200)373; CHECK: ]374; CHECK: FieldList: 0x0375; CHECK: DerivedFrom: 0x0376; CHECK: VShape: 0x0377; CHECK: SizeOf: 0378; CHECK: Name: AStruct379; CHECK: LinkageName: .?AUAStruct@@380; CHECK: }381; CHECK: Struct (0x{{.*}}) {382; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)383; CHECK: MemberCount: 0384; CHECK: Properties [ (0x200)385; CHECK: HasUniqueName (0x200)386; CHECK: ]387; CHECK: FieldList: <field list> (0x{{.*}})388; CHECK: DerivedFrom: 0x0389; CHECK: VShape: 0x0390; CHECK: SizeOf: 1391; CHECK: Name: AStruct392; CHECK: LinkageName: .?AUAStruct@@393; CHECK: }394 395 396; CHECK: Struct (0x{{.*}}) {397; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)398; CHECK: MemberCount: 0399; CHECK: Properties [ (0x280)400; CHECK: ForwardReference (0x80)401; CHECK: HasUniqueName (0x200)402; CHECK: ]403; CHECK: FieldList: 0x0404; CHECK: DerivedFrom: 0x0405; CHECK: VShape: 0x0406; CHECK: SizeOf: 0407; CHECK: Name: BStruct408; CHECK: LinkageName: .?AUBStruct@@409; CHECK: }410; CHECK: Struct (0x{{.*}}) {411; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)412; CHECK: MemberCount: 1413; CHECK: Properties [ (0x202)414; CHECK: HasConstructorOrDestructor (0x2)415; CHECK: HasUniqueName (0x200)416; CHECK: ]417; CHECK: FieldList: <field list> (0x{{.*}})418; CHECK: DerivedFrom: 0x0419; CHECK: VShape: 0x0420; CHECK: SizeOf: 1421; CHECK: Name: BStruct422; CHECK: LinkageName: .?AUBStruct@@423; CHECK: }424 425 426; CHECK: Struct (0x{{.*}}) {427; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)428; CHECK: MemberCount: 0429; CHECK: Properties [ (0x380)430; CHECK: ForwardReference (0x80)431; CHECK: HasUniqueName (0x200)432; CHECK: Scoped (0x100)433; CHECK: ]434; CHECK: FieldList: 0x0435; CHECK: DerivedFrom: 0x0436; CHECK: VShape: 0x0437; CHECK: SizeOf: 0438; CHECK: Name: S::ComplexStruct439; CHECK: LinkageName: .?AUComplexStruct@?1??S@@YAXXZ@440; CHECK: }441; CHECK: Struct (0x{{.*}}) {442; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)443; CHECK: MemberCount: 0444; CHECK: Properties [ (0x388)445; CHECK: ForwardReference (0x80)446; CHECK: HasUniqueName (0x200)447; CHECK: Nested (0x8)448; CHECK: Scoped (0x100)449; CHECK: ]450; CHECK: FieldList: 0x0451; CHECK: DerivedFrom: 0x0452; CHECK: VShape: 0x0453; CHECK: SizeOf: 0454; CHECK: Name: S::ComplexStruct::S455; CHECK: LinkageName: .?AUS@ComplexStruct@?1??0@YAXXZ@456; CHECK: }457; CHECK: Struct (0x{{.*}}) {458; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)459; CHECK: MemberCount: 2460; CHECK: Properties [ (0x310)461; CHECK: ContainsNestedClass (0x10)462; CHECK: HasUniqueName (0x200)463; CHECK: Scoped (0x100)464; CHECK: ]465; CHECK: FieldList: <field list> (0x{{.*}})466; CHECK: DerivedFrom: 0x0467; CHECK: VShape: 0x0468; CHECK: SizeOf: 1469; CHECK: Name: S::ComplexStruct470; CHECK: LinkageName: .?AUComplexStruct@?1??S@@YAXXZ@471; CHECK: }472; CHECK: Struct (0x{{.*}}) {473; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)474; CHECK: MemberCount: 0475; CHECK: Properties [ (0x308)476; CHECK: HasUniqueName (0x200)477; CHECK: Nested (0x8)478; CHECK: Scoped (0x100)479; CHECK: ]480; CHECK: FieldList: <field list> (0x{{.*}})481; CHECK: DerivedFrom: 0x0482; CHECK: VShape: 0x0483; CHECK: SizeOf: 1484; CHECK: Name: S::ComplexStruct::S485; CHECK: LinkageName: .?AUS@ComplexStruct@?1??0@YAXXZ@486; CHECK: }487 488 489; CHECK: Union (0x1067) {490; CHECK: TypeLeafKind: LF_UNION (0x1506)491; CHECK: MemberCount: 0492; CHECK: Properties [ (0x280)493; CHECK: ForwardReference (0x80)494; CHECK: HasUniqueName (0x200)495; CHECK: ]496; CHECK: FieldList: 0x0497; CHECK: SizeOf: 0498; CHECK: Name: AUnion499; CHECK: LinkageName: .?ATAUnion@@500; CHECK: }501; CHECK: Union (0x106B) {502; CHECK: TypeLeafKind: LF_UNION (0x1506)503; CHECK: MemberCount: 0504; CHECK: Properties [ (0x600)505; CHECK: HasUniqueName (0x200)506; CHECK: Sealed (0x400)507; CHECK: ]508; CHECK: FieldList: <field list> (0x{{.*}})509; CHECK: SizeOf: 1510; CHECK: Name: AUnion511; CHECK: LinkageName: .?ATAUnion@@512; CHECK: }513 514 515; CHECK: Union (0x106E) {516; CHECK: TypeLeafKind: LF_UNION (0x1506)517; CHECK: MemberCount: 0518; CHECK: Properties [ (0x280)519; CHECK: ForwardReference (0x80)520; CHECK: HasUniqueName (0x200)521; CHECK: ]522; CHECK: FieldList: 0x0523; CHECK: SizeOf: 0524; CHECK: Name: BUnion525; CHECK: LinkageName: .?ATBUnion@@526; CHECK: }527; CHECK: Union (0x1075) {528; CHECK: TypeLeafKind: LF_UNION (0x1506)529; CHECK: MemberCount: 1530; CHECK: Properties [ (0x600)531; CHECK: HasUniqueName (0x200)532; CHECK: Sealed (0x400)533; CHECK: ]534; CHECK: FieldList: <field list> (0x{{.*}})535; CHECK: SizeOf: 1536; CHECK: Name: BUnion537; CHECK: LinkageName: .?ATBUnion@@538; CHECK: }539 540 541; CHECK: Union (0x{{.*}}) {542; CHECK: TypeLeafKind: LF_UNION (0x1506)543; CHECK: MemberCount: 0544; CHECK: Properties [ (0x380)545; CHECK: ForwardReference (0x80)546; CHECK: HasUniqueName (0x200)547; CHECK: Scoped (0x100)548; CHECK: ]549; CHECK: FieldList: 0x0550; CHECK: SizeOf: 0551; CHECK: Name: U::ComplexUnion552; CHECK: LinkageName: .?ATComplexUnion@?1??U@@YAXXZ@553; CHECK: }554; CHECK: Union (0x{{.*}}) {555; CHECK: TypeLeafKind: LF_UNION (0x1506)556; CHECK: MemberCount: 0557; CHECK: Properties [ (0x388)558; CHECK: ForwardReference (0x80)559; CHECK: HasUniqueName (0x200)560; CHECK: Nested (0x8)561; CHECK: Scoped (0x100)562; CHECK: ]563; CHECK: FieldList: 0x0564; CHECK: SizeOf: 0565; CHECK: Name: U::ComplexUnion::NestedUnion566; CHECK: LinkageName: .?ATNestedUnion@ComplexUnion@?1??U@@YAXXZ@567; CHECK: }568; CHECK: Union (0x{{.*}}) {569; CHECK: TypeLeafKind: LF_UNION (0x1506)570; CHECK: MemberCount: 3571; CHECK: Properties [ (0x710)572; CHECK: ContainsNestedClass (0x10)573; CHECK: HasUniqueName (0x200)574; CHECK: Scoped (0x100)575; CHECK: Sealed (0x400)576; CHECK: ]577; CHECK: FieldList: <field list> (0x{{.*}})578; CHECK: SizeOf: 4579; CHECK: Name: U::ComplexUnion580; CHECK: LinkageName: .?ATComplexUnion@?1??U@@YAXXZ@581; CHECK: }582; CHECK: Union (0x{{.*}}) {583; CHECK: TypeLeafKind: LF_UNION (0x1506)584; CHECK: MemberCount: 1585; CHECK: Properties [ (0x708)586; CHECK: HasUniqueName (0x200)587; CHECK: Nested (0x8)588; CHECK: Scoped (0x100)589; CHECK: Sealed (0x400)590; CHECK: ]591; CHECK: FieldList: <field list> (0x{{.*}})592; CHECK: SizeOf: 4593; CHECK: Name: U::ComplexUnion::NestedUnion594; CHECK: LinkageName: .?ATNestedUnion@ComplexUnion@?1??U@@YAXXZ@595; CHECK: }596 597 598; CHECK: Struct (0x{{.*}}) {599; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)600; CHECK: MemberCount: 0601; CHECK: Properties [ (0x280)602; CHECK: ForwardReference (0x80)603; CHECK: HasUniqueName (0x200)604; CHECK: ]605; CHECK: FieldList: 0x0606; CHECK: DerivedFrom: 0x0607; CHECK: VShape: 0x0608; CHECK: SizeOf: 0609; CHECK: Name: Foo610; CHECK: LinkageName: .?AUFoo@@611; CHECK: }612; CHECK: Struct (0x{{.*}}) {613; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)614; CHECK: MemberCount: 3615; CHECK: Properties [ (0x200)616; CHECK: HasUniqueName (0x200)617; CHECK: ]618; CHECK: FieldList: <field list> (0x{{.*}})619; CHECK: DerivedFrom: 0x0620; CHECK: VShape: 0x0621; CHECK: SizeOf: 4622; CHECK: Name: Foo623; CHECK: LinkageName: .?AUFoo@@624; CHECK: }625 626 627; CHECK: Struct (0x{{.*}}) {628; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)629; CHECK: MemberCount: 0630; CHECK: Properties [ (0x280)631; CHECK: ForwardReference (0x80)632; CHECK: HasUniqueName (0x200)633; CHECK: ]634; CHECK: FieldList: 0x0635; CHECK: DerivedFrom: 0x0636; CHECK: VShape: 0x0637; CHECK: SizeOf: 0638; CHECK: Name: Bar639; CHECK: LinkageName: .?AUBar@@640; CHECK: }641; CHECK: Struct (0x{{.*}}) {642; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505)643; CHECK: MemberCount: 1644; CHECK: Properties [ (0x202)645; CHECK: HasConstructorOrDestructor (0x2)646; CHECK: HasUniqueName (0x200)647; CHECK: ]648; CHECK: FieldList: <field list> (0x{{.*}})649; CHECK: DerivedFrom: 0x0650; CHECK: VShape: 0x0651; CHECK: SizeOf: 4652; CHECK: Name: Bar653; CHECK: LinkageName: .?AUBar@@654; CHECK: }655; CHECK: ]656 657; ASM-INLINE-COMMENTS: # MethodOverloadList (0x1088)658; ASM-INLINE-COMMENTS: .short 0x12 # Record length659; ASM-INLINE-COMMENTS: .short 0x1206 # Record kind: LF_METHODLIST660; ASM-INLINE-COMMENTS: .short 0x3 # Method661; ASM-INLINE-COMMENTS: # Attrs: Public662; ASM-INLINE-COMMENTS: .short 0x0663; ASM-INLINE-COMMENTS: .long 0x1083 # Type: void Foo::()664; ASM-INLINE-COMMENTS: .short 0x3 # Attrs: Public665; ASM-INLINE-COMMENTS: .short 0x0666; ASM-INLINE-COMMENTS: .long 0x1087 # Type: void Foo::(const Foo&)667 668 669; ModuleID = 'class-options-common.cpp'670source_filename = "class-options.cpp"671target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"672target triple = "x86_64-pc-windows-msvc19.15.26729"673 674%struct.Foo = type { i32 }675%struct.Bar = type { i32 }676%class.EmptyClass = type { i8 }677%class.ExplicitCtorClass = type { i8 }678%class.DefaultedCtorClass = type { i8 }679%class.DefaultArgumentCtorClass = type { i8 }680%class.UserDtorClass = type { i8 }681%class.DefaultedDtorClass = type { i8 }682%class.AClass = type { i8 }683%class.BClass = type { i8 }684%struct.AStruct = type { i8 }685%struct.BStruct = type { i8 }686%struct.ComplexStruct = type { %"struct.S()::ComplexStruct::S" }687%"struct.S()::ComplexStruct::S" = type { i8 }688%union.AUnion = type { i8 }689%union.BUnion = type { i8 }690%union.ComplexUnion = type { %"union.U()::ComplexUnion::NestedUnion" }691%"union.U()::ComplexUnion::NestedUnion" = type { i32 }692 693@"?f@@3UFoo@@A" = dso_local global %struct.Foo zeroinitializer, align 4, !dbg !0694@"?b@@3UBar@@A" = dso_local global %struct.Bar zeroinitializer, align 4, !dbg !6695 696; Function Attrs: noinline nounwind optnone uwtable697define dso_local i8 @"?Func_EmptyClass@@YA?AVEmptyClass@@AEAV1@@Z"(ptr dereferenceable(1) %arg) #0 !dbg !30 {698entry:699 %retval = alloca %class.EmptyClass, align 1700 %arg.addr = alloca ptr, align 8701 store ptr %arg, ptr %arg.addr, align 8702 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !35, metadata !DIExpression()), !dbg !36703 %0 = load ptr, ptr %arg.addr, align 8, !dbg !36704 %1 = load i8, ptr %retval, align 1, !dbg !36705 ret i8 %1, !dbg !36706}707 708; Function Attrs: nounwind readnone speculatable709declare void @llvm.dbg.declare(metadata, metadata, metadata) #1710 711; Function Attrs: noinline nounwind optnone uwtable712define dso_local void @"?Func_ExplicitCtorClass@@YA?AVExplicitCtorClass@@AEAV1@@Z"(ptr noalias sret(%class.ExplicitCtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !37 {713entry:714 %arg.addr = alloca ptr, align 8715 store ptr %arg, ptr %arg.addr, align 8716 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !47, metadata !DIExpression()), !dbg !48717 %0 = load ptr, ptr %arg.addr, align 8, !dbg !48718 ret void, !dbg !48719}720 721; Function Attrs: noinline nounwind optnone uwtable722define dso_local void @"?Func_DefaultedCtorClass@@YA?AVDefaultedCtorClass@@AEAV1@@Z"(ptr noalias sret(%class.DefaultedCtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !49 {723entry:724 %arg.addr = alloca ptr, align 8725 store ptr %arg, ptr %arg.addr, align 8726 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !59, metadata !DIExpression()), !dbg !60727 %0 = load ptr, ptr %arg.addr, align 8, !dbg !60728 ret void, !dbg !60729}730 731; Function Attrs: noinline nounwind optnone uwtable732define dso_local void @"?Func_DefaultArgumentCtorClass@@YA?AVDefaultArgumentCtorClass@@AEAV1@@Z"(ptr noalias sret(%class.DefaultArgumentCtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !61 {733entry:734 %arg.addr = alloca ptr, align 8735 store ptr %arg, ptr %arg.addr, align 8736 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !71, metadata !DIExpression()), !dbg !72737 %0 = load ptr, ptr %arg.addr, align 8, !dbg !72738 ret void, !dbg !72739}740 741; Function Attrs: noinline nounwind optnone uwtable742define dso_local void @"?Func_UserDtorClass@@YA?AVUserDtorClass@@AEAV1@@Z"(ptr noalias sret(%class.UserDtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !73 {743entry:744 %arg.addr = alloca ptr, align 8745 store ptr %arg, ptr %arg.addr, align 8746 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !83, metadata !DIExpression()), !dbg !84747 %0 = load ptr, ptr %arg.addr, align 8, !dbg !84748 ret void, !dbg !84749}750 751; Function Attrs: noinline nounwind optnone uwtable752define dso_local void @"?Func_DefaultedDtorClass@@YA?AVDefaultedDtorClass@@AEAV1@@Z"(ptr noalias sret(%class.DefaultedDtorClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !85 {753entry:754 %arg.addr = alloca ptr, align 8755 store ptr %arg, ptr %arg.addr, align 8756 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !95, metadata !DIExpression()), !dbg !96757 %0 = load ptr, ptr %arg.addr, align 8, !dbg !96758 ret void, !dbg !96759}760 761; Function Attrs: noinline nounwind optnone uwtable762define dso_local void @"?Func_AClass@@YA?AVAClass@@AEAV1@@Z"(ptr noalias sret(%class.AClass) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !97 {763entry:764 %arg.addr = alloca ptr, align 8765 store ptr %arg, ptr %arg.addr, align 8766 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !104, metadata !DIExpression()), !dbg !105767 %0 = load ptr, ptr %arg.addr, align 8, !dbg !105768 ret void, !dbg !105769}770 771; Function Attrs: noinline nounwind optnone uwtable772define dso_local i8 @"?Func_BClass@@YA?AVBClass@@AEAV1@@Z"(ptr dereferenceable(1) %arg) #0 !dbg !106 {773entry:774 %retval = alloca %class.BClass, align 1775 %arg.addr = alloca ptr, align 8776 store ptr %arg, ptr %arg.addr, align 8777 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !113, metadata !DIExpression()), !dbg !114778 %0 = load ptr, ptr %arg.addr, align 8, !dbg !114779 %1 = load i8, ptr %retval, align 1, !dbg !114780 ret i8 %1, !dbg !114781}782 783; Function Attrs: noinline nounwind optnone uwtable784define dso_local i8 @"?Func_AStruct@@YA?AUAStruct@@AEAU1@@Z"(ptr dereferenceable(1) %arg) #0 !dbg !115 {785entry:786 %retval = alloca %struct.AStruct, align 1787 %arg.addr = alloca ptr, align 8788 store ptr %arg, ptr %arg.addr, align 8789 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !120, metadata !DIExpression()), !dbg !121790 %0 = load ptr, ptr %arg.addr, align 8, !dbg !121791 %1 = load i8, ptr %retval, align 1, !dbg !121792 ret i8 %1, !dbg !121793}794 795; Function Attrs: noinline nounwind optnone uwtable796define dso_local void @"?Func_BStruct@@YA?AUBStruct@@AEAU1@@Z"(ptr noalias sret(%struct.BStruct) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !122 {797entry:798 %arg.addr = alloca ptr, align 8799 store ptr %arg, ptr %arg.addr, align 8800 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !132, metadata !DIExpression()), !dbg !133801 %0 = load ptr, ptr %arg.addr, align 8, !dbg !133802 ret void, !dbg !133803}804 805; Function Attrs: noinline nounwind optnone uwtable806define dso_local void @"?S@@YAXXZ"() #0 !dbg !134 {807entry:808 %s = alloca %struct.ComplexStruct, align 1809 call void @llvm.dbg.declare(metadata ptr %s, metadata !137, metadata !DIExpression()), !dbg !142810 ret void, !dbg !143811}812 813; Function Attrs: noinline nounwind optnone uwtable814define dso_local i8 @"?Func_AUnion@@YA?ATAUnion@@AEAT1@@Z"(ptr dereferenceable(1) %arg) #0 !dbg !144 {815entry:816 %retval = alloca %union.AUnion, align 1817 %arg.addr = alloca ptr, align 8818 store ptr %arg, ptr %arg.addr, align 8819 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !149, metadata !DIExpression()), !dbg !150820 %0 = load ptr, ptr %arg.addr, align 8, !dbg !150821 %1 = load i8, ptr %retval, align 1, !dbg !150822 ret i8 %1, !dbg !150823}824 825; Function Attrs: noinline nounwind optnone uwtable826define dso_local void @"?Func_BUnion@@YA?ATBUnion@@AEAT1@@Z"(ptr noalias sret(%union.BUnion) %agg.result, ptr dereferenceable(1) %arg) #0 !dbg !151 {827entry:828 %arg.addr = alloca ptr, align 8829 store ptr %arg, ptr %arg.addr, align 8830 call void @llvm.dbg.declare(metadata ptr %arg.addr, metadata !161, metadata !DIExpression()), !dbg !162831 %0 = load ptr, ptr %arg.addr, align 8, !dbg !162832 ret void, !dbg !162833}834 835; Function Attrs: noinline nounwind optnone uwtable836define dso_local void @"?U@@YAXXZ"() #0 !dbg !163 {837entry:838 %c = alloca %union.ComplexUnion, align 4839 call void @llvm.dbg.declare(metadata ptr %c, metadata !164, metadata !DIExpression()), !dbg !172840 ret void, !dbg !173841}842 843attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "use-soft-float"="false" }844attributes #1 = { nounwind readnone speculatable }845 846!llvm.dbg.cu = !{!2}847!llvm.module.flags = !{!25, !26, !27, !28}848!llvm.ident = !{!29}849 850!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())851!1 = distinct !DIGlobalVariable(name: "f", linkageName: "?f@@3UFoo@@A", scope: !2, file: !8, line: 60, type: !13, isLocal: false, isDefinition: true)852!2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !3, producer: "clang version 8.0.0 ", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5, nameTableKind: None)853!3 = !DIFile(filename: "class-options-common.cpp", directory: "D:\5Cupstream\5Cllvm\5Ctest\5CDebugInfo\5CCOFF", checksumkind: CSK_MD5, checksum: "73d5c55a09899333f27526ae5ea8c878")854!4 = !{}855!5 = !{!0, !6}856!6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression())857!7 = distinct !DIGlobalVariable(name: "b", linkageName: "?b@@3UBar@@A", scope: !2, file: !8, line: 65, type: !9, isLocal: false, isDefinition: true)858!8 = !DIFile(filename: "class-options.cpp", directory: "D:\5Cupstream\5Cllvm\5Ctest\5CDebugInfo\5CCOFF")859!9 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Bar", file: !8, line: 62, size: 32, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !10, identifier: ".?AUBar@@")860!10 = !{!11}861!11 = !DIDerivedType(tag: DW_TAG_member, name: "m", scope: !9, file: !8, line: 64, baseType: !12, size: 32)862!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)863!13 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", file: !8, line: 55, size: 32, flags: DIFlagTypePassByValue, elements: !14, identifier: ".?AUFoo@@")864!14 = !{!15, !16, !20}865!15 = !DIDerivedType(tag: DW_TAG_member, name: "m", scope: !13, file: !8, line: 59, baseType: !12, size: 32)866!16 = !DISubprogram(name: "Foo", scope: !13, file: !8, line: 57, type: !17, isLocal: false, isDefinition: false, scopeLine: 57, flags: DIFlagPrototyped, isOptimized: false)867!17 = !DISubroutineType(types: !18)868!18 = !{null, !19}869!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)870!20 = !DISubprogram(name: "Foo", scope: !13, file: !8, line: 58, type: !21, isLocal: false, isDefinition: false, scopeLine: 58, flags: DIFlagPrototyped, isOptimized: false)871!21 = !DISubroutineType(types: !22)872!22 = !{null, !19, !23}873!23 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !24, size: 64)874!24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !13)875!25 = !{i32 2, !"CodeView", i32 1}876!26 = !{i32 2, !"Debug Info Version", i32 3}877!27 = !{i32 1, !"wchar_size", i32 2}878!28 = !{i32 7, !"PIC Level", i32 2}879!29 = !{!"clang version 8.0.0 "}880!30 = distinct !DISubprogram(name: "Func_EmptyClass", linkageName: "?Func_EmptyClass@@YA?AVEmptyClass@@AEAV1@@Z", scope: !8, file: !8, line: 9, type: !31, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)881!31 = !DISubroutineType(types: !32)882!32 = !{!33, !34}883!33 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "EmptyClass", file: !8, line: 7, size: 8, flags: DIFlagTypePassByValue, elements: !4, identifier: ".?AVEmptyClass@@")884!34 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !33, size: 64)885!35 = !DILocalVariable(name: "arg", arg: 1, scope: !30, file: !8, line: 9, type: !34)886!36 = !DILocation(line: 9, scope: !30)887!37 = distinct !DISubprogram(name: "Func_ExplicitCtorClass", linkageName: "?Func_ExplicitCtorClass@@YA?AVExplicitCtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 16, type: !38, isLocal: false, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)888!38 = !DISubroutineType(types: !39)889!39 = !{!40, !46}890!40 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "ExplicitCtorClass", file: !8, line: 11, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !41, identifier: ".?AVExplicitCtorClass@@")891!41 = !{!42}892!42 = !DISubprogram(name: "ExplicitCtorClass", scope: !40, file: !8, line: 14, type: !43, isLocal: false, isDefinition: false, scopeLine: 14, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: false)893!43 = !DISubroutineType(types: !44)894!44 = !{null, !45}895!45 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)896!46 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !40, size: 64)897!47 = !DILocalVariable(name: "arg", arg: 1, scope: !37, file: !8, line: 16, type: !46)898!48 = !DILocation(line: 16, scope: !37)899!49 = distinct !DISubprogram(name: "Func_DefaultedCtorClass", linkageName: "?Func_DefaultedCtorClass@@YA?AVDefaultedCtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 23, type: !50, isLocal: false, isDefinition: true, scopeLine: 23, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)900!50 = !DISubroutineType(types: !51)901!51 = !{!52, !58}902!52 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "DefaultedCtorClass", file: !8, line: 18, size: 8, flags: DIFlagTypePassByValue, elements: !53, identifier: ".?AVDefaultedCtorClass@@")903!53 = !{!54}904!54 = !DISubprogram(name: "DefaultedCtorClass", scope: !52, file: !8, line: 21, type: !55, isLocal: false, isDefinition: false, scopeLine: 21, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false)905!55 = !DISubroutineType(types: !56)906!56 = !{null, !57}907!57 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !52, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)908!58 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !52, size: 64)909!59 = !DILocalVariable(name: "arg", arg: 1, scope: !49, file: !8, line: 23, type: !58)910!60 = !DILocation(line: 23, scope: !49)911!61 = distinct !DISubprogram(name: "Func_DefaultArgumentCtorClass", linkageName: "?Func_DefaultArgumentCtorClass@@YA?AVDefaultArgumentCtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 30, type: !62, isLocal: false, isDefinition: true, scopeLine: 30, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)912!62 = !DISubroutineType(types: !63)913!63 = !{!64, !70}914!64 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "DefaultArgumentCtorClass", file: !8, line: 25, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !65, identifier: ".?AVDefaultArgumentCtorClass@@")915!65 = !{!66}916!66 = !DISubprogram(name: "DefaultArgumentCtorClass", scope: !64, file: !8, line: 28, type: !67, isLocal: false, isDefinition: false, scopeLine: 28, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false)917!67 = !DISubroutineType(types: !68)918!68 = !{null, !69, !12}919!69 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !64, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)920!70 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !64, size: 64)921!71 = !DILocalVariable(name: "arg", arg: 1, scope: !61, file: !8, line: 30, type: !70)922!72 = !DILocation(line: 30, scope: !61)923!73 = distinct !DISubprogram(name: "Func_UserDtorClass", linkageName: "?Func_UserDtorClass@@YA?AVUserDtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 37, type: !74, isLocal: false, isDefinition: true, scopeLine: 37, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)924!74 = !DISubroutineType(types: !75)925!75 = !{!76, !82}926!76 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "UserDtorClass", file: !8, line: 32, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !77, identifier: ".?AVUserDtorClass@@")927!77 = !{!78}928!78 = !DISubprogram(name: "~UserDtorClass", scope: !76, file: !8, line: 35, type: !79, isLocal: false, isDefinition: false, scopeLine: 35, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false)929!79 = !DISubroutineType(types: !80)930!80 = !{null, !81}931!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !76, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)932!82 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !76, size: 64)933!83 = !DILocalVariable(name: "arg", arg: 1, scope: !73, file: !8, line: 37, type: !82)934!84 = !DILocation(line: 37, scope: !73)935!85 = distinct !DISubprogram(name: "Func_DefaultedDtorClass", linkageName: "?Func_DefaultedDtorClass@@YA?AVDefaultedDtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 44, type: !86, isLocal: false, isDefinition: true, scopeLine: 44, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)936!86 = !DISubroutineType(types: !87)937!87 = !{!88, !94}938!88 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "DefaultedDtorClass", file: !8, line: 39, size: 8, flags: DIFlagTypePassByValue, elements: !89, identifier: ".?AVDefaultedDtorClass@@")939!89 = !{!90}940!90 = !DISubprogram(name: "~DefaultedDtorClass", scope: !88, file: !8, line: 42, type: !91, isLocal: false, isDefinition: false, scopeLine: 42, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false)941!91 = !DISubroutineType(types: !92)942!92 = !{null, !93}943!93 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !88, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)944!94 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !88, size: 64)945!95 = !DILocalVariable(name: "arg", arg: 1, scope: !85, file: !8, line: 44, type: !94)946!96 = !DILocation(line: 44, scope: !85)947!97 = distinct !DISubprogram(name: "Func_AClass", linkageName: "?Func_AClass@@YA?AVAClass@@AEAV1@@Z", scope: !8, file: !8, line: 49, type: !98, isLocal: false, isDefinition: true, scopeLine: 49, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)948!98 = !DISubroutineType(types: !99)949!99 = !{!100, !103}950!100 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "AClass", file: !8, line: 46, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !101, identifier: ".?AVAClass@@")951!101 = !{!102}952!102 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !100, baseType: !40, flags: DIFlagPublic, extraData: i32 0)953!103 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !100, size: 64)954!104 = !DILocalVariable(name: "arg", arg: 1, scope: !97, file: !8, line: 49, type: !103)955!105 = !DILocation(line: 49, scope: !97)956!106 = distinct !DISubprogram(name: "Func_BClass", linkageName: "?Func_BClass@@YA?AVBClass@@AEAV1@@Z", scope: !8, file: !8, line: 53, type: !107, isLocal: false, isDefinition: true, scopeLine: 53, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)957!107 = !DISubroutineType(types: !108)958!108 = !{!109, !112}959!109 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "BClass", file: !8, line: 51, size: 8, flags: DIFlagTypePassByValue, elements: !110, identifier: ".?AVBClass@@")960!110 = !{!111}961!111 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !109, file: !8, line: 51, baseType: !12, flags: DIFlagStaticMember)962!112 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !109, size: 64)963!113 = !DILocalVariable(name: "arg", arg: 1, scope: !106, file: !8, line: 53, type: !112)964!114 = !DILocation(line: 53, scope: !106)965!115 = distinct !DISubprogram(name: "Func_AStruct", linkageName: "?Func_AStruct@@YA?AUAStruct@@AEAU1@@Z", scope: !8, file: !8, line: 69, type: !116, isLocal: false, isDefinition: true, scopeLine: 69, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)966!116 = !DISubroutineType(types: !117)967!117 = !{!118, !119}968!118 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "AStruct", file: !8, line: 67, size: 8, flags: DIFlagTypePassByValue, elements: !4, identifier: ".?AUAStruct@@")969!119 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !118, size: 64)970!120 = !DILocalVariable(name: "arg", arg: 1, scope: !115, file: !8, line: 69, type: !119)971!121 = !DILocation(line: 69, scope: !115)972!122 = distinct !DISubprogram(name: "Func_BStruct", linkageName: "?Func_BStruct@@YA?AUBStruct@@AEAU1@@Z", scope: !8, file: !8, line: 73, type: !123, isLocal: false, isDefinition: true, scopeLine: 73, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)973!123 = !DISubroutineType(types: !124)974!124 = !{!125, !131}975!125 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "BStruct", file: !8, line: 71, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !126, identifier: ".?AUBStruct@@")976!126 = !{!127}977!127 = !DISubprogram(name: "BStruct", scope: !125, file: !8, line: 71, type: !128, isLocal: false, isDefinition: false, scopeLine: 71, flags: DIFlagPrototyped, isOptimized: false)978!128 = !DISubroutineType(types: !129)979!129 = !{null, !130}980!130 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !125, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)981!131 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !125, size: 64)982!132 = !DILocalVariable(name: "arg", arg: 1, scope: !122, file: !8, line: 73, type: !131)983!133 = !DILocation(line: 73, scope: !122)984!134 = distinct !DISubprogram(name: "S", linkageName: "?S@@YAXXZ", scope: !8, file: !8, line: 75, type: !135, isLocal: false, isDefinition: true, scopeLine: 75, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)985!135 = !DISubroutineType(types: !136)986!136 = !{null}987!137 = !DILocalVariable(name: "s", scope: !134, file: !8, line: 85, type: !138)988!138 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "ComplexStruct", scope: !134, file: !8, line: 76, size: 8, flags: DIFlagTypePassByValue, elements: !139, identifier: ".?AUComplexStruct@?1??S@@YAXXZ@")989!139 = !{!140, !141}990!140 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", scope: !138, file: !8, line: 80, size: 8, flags: DIFlagTypePassByValue, elements: !4, identifier: ".?AUS@ComplexStruct@?1??0@YAXXZ@")991!141 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !138, file: !8, line: 83, baseType: !140, size: 8)992!142 = !DILocation(line: 85, scope: !134)993!143 = !DILocation(line: 86, scope: !134)994!144 = distinct !DISubprogram(name: "Func_AUnion", linkageName: "?Func_AUnion@@YA?ATAUnion@@AEAT1@@Z", scope: !8, file: !8, line: 90, type: !145, isLocal: false, isDefinition: true, scopeLine: 90, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)995!145 = !DISubroutineType(types: !146)996!146 = !{!147, !148}997!147 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "AUnion", file: !8, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !4, identifier: ".?ATAUnion@@")998!148 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !147, size: 64)999!149 = !DILocalVariable(name: "arg", arg: 1, scope: !144, file: !8, line: 90, type: !148)1000!150 = !DILocation(line: 90, scope: !144)1001!151 = distinct !DISubprogram(name: "Func_BUnion", linkageName: "?Func_BUnion@@YA?ATBUnion@@AEAT1@@Z", scope: !8, file: !8, line: 94, type: !152, isLocal: false, isDefinition: true, scopeLine: 94, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)1002!152 = !DISubroutineType(types: !153)1003!153 = !{!154, !160}1004!154 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "BUnion", file: !8, line: 92, size: 8, flags: DIFlagTypePassByValue, elements: !155, identifier: ".?ATBUnion@@")1005!155 = !{!156}1006!156 = !DISubprogram(name: "BUnion", scope: !154, file: !8, line: 92, type: !157, isLocal: false, isDefinition: false, scopeLine: 92, flags: DIFlagPrototyped, isOptimized: false)1007!157 = !DISubroutineType(types: !158)1008!158 = !{null, !159}1009!159 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !154, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)1010!160 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !154, size: 64)1011!161 = !DILocalVariable(name: "arg", arg: 1, scope: !151, file: !8, line: 94, type: !160)1012!162 = !DILocation(line: 94, scope: !151)1013!163 = distinct !DISubprogram(name: "U", linkageName: "?U@@YAXXZ", scope: !8, file: !8, line: 96, type: !135, isLocal: false, isDefinition: true, scopeLine: 96, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)1014!164 = !DILocalVariable(name: "c", scope: !163, file: !8, line: 105, type: !165)1015!165 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "ComplexUnion", scope: !163, file: !8, line: 97, size: 32, flags: DIFlagTypePassByValue, elements: !166, identifier: ".?ATComplexUnion@?1??U@@YAXXZ@")1016!166 = !{!167, !170, !171}1017!167 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "NestedUnion", scope: !165, file: !8, line: 100, size: 32, flags: DIFlagTypePassByValue, elements: !168, identifier: ".?ATNestedUnion@ComplexUnion@?1??U@@YAXXZ@")1018!168 = !{!169}1019!169 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !167, file: !8, line: 100, baseType: !12, size: 32)1020!170 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !165, file: !8, line: 102, baseType: !167, size: 32)1021!171 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !165, file: !8, line: 103, baseType: !12, size: 32)1022!172 = !DILocation(line: 105, scope: !163)1023!173 = !DILocation(line: 106, scope: !163)1024