1*e2e82061SReid Kleckner // RUN: %clang_cc1 %s -std=c++11 -triple=x86_64-pc-windows-msvc -debug-info-kind=limited -gcodeview -emit-llvm -o - | FileCheck %s 2*e2e82061SReid Kleckner 3*e2e82061SReid Kleckner struct HasNested { 4*e2e82061SReid Kleckner enum InnerEnum { _BUF_SIZE = 1 }; 5*e2e82061SReid Kleckner typedef int InnerTypedef; 6*e2e82061SReid Kleckner enum { InnerEnumerator = 2 }; 7*e2e82061SReid Kleckner struct InnerStruct { }; 8*e2e82061SReid Kleckner }; 9*e2e82061SReid Kleckner HasNested f; 10*e2e82061SReid Kleckner 11*e2e82061SReid Kleckner // CHECK: ![[INNERENUM:[0-9]+]] = !DICompositeType(tag: DW_TAG_enumeration_type, name: "InnerEnum", {{.*}}) 12*e2e82061SReid Kleckner // CHECK: ![[HASNESTED:[0-9]+]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "HasNested", 13*e2e82061SReid Kleckner // CHECK-SAME: elements: ![[MEMBERS:[0-9]+]], 14*e2e82061SReid Kleckner // 15*e2e82061SReid Kleckner // CHECK: ![[MEMBERS]] = !{![[INNERENUM]], ![[INNERTYPEDEF:[0-9]+]], ![[UNNAMEDENUM:[0-9]+]], ![[INNERSTRUCT:[0-9]+]]} 16*e2e82061SReid Kleckner // 17*e2e82061SReid Kleckner // CHECK: ![[INNERTYPEDEF]] = !DIDerivedType(tag: DW_TAG_typedef, name: "InnerTypedef", scope: ![[HASNESTED]]{{.*}}) 18*e2e82061SReid Kleckner // 19*e2e82061SReid Kleckner // CHECK: ![[UNNAMEDENUM]] = !DICompositeType(tag: DW_TAG_enumeration_type, scope: ![[HASNESTED]], 20*e2e82061SReid Kleckner // CHECK-SAME: elements: ![[UNNAMEDMEMBERS:[0-9]+]], 21*e2e82061SReid Kleckner // CHECK: ![[UNNAMEDMEMBERS]] = !{![[INNERENUMERATOR:[0-9]+]]} 22*e2e82061SReid Kleckner // CHECK: ![[INNERENUMERATOR]] = !DIEnumerator(name: "InnerEnumerator", value: 2) 23*e2e82061SReid Kleckner // 24*e2e82061SReid Kleckner // CHECK: ![[INNERSTRUCT]] = !DICompositeType(tag: DW_TAG_structure_type, name: "InnerStruct" 25*e2e82061SReid Kleckner // CHECK-SAME: flags: DIFlagFwdDecl 26