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