diff options
Diffstat (limited to 'test/CodeGenCXX/debug-info-codeview-nested-types.cpp')
-rw-r--r-- | test/CodeGenCXX/debug-info-codeview-nested-types.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/CodeGenCXX/debug-info-codeview-nested-types.cpp b/test/CodeGenCXX/debug-info-codeview-nested-types.cpp new file mode 100644 index 000000000000..7c8f78e7a001 --- /dev/null +++ b/test/CodeGenCXX/debug-info-codeview-nested-types.cpp @@ -0,0 +1,25 @@ +// RUN: %clang_cc1 %s -std=c++11 -triple=x86_64-pc-windows-msvc -debug-info-kind=limited -gcodeview -emit-llvm -o - | FileCheck %s + +struct HasNested { + enum InnerEnum { _BUF_SIZE = 1 }; + typedef int InnerTypedef; + enum { InnerEnumerator = 2 }; + struct InnerStruct { }; +}; +HasNested f; + +// CHECK: ![[INNERENUM:[0-9]+]] = !DICompositeType(tag: DW_TAG_enumeration_type, name: "InnerEnum", {{.*}}) +// CHECK: ![[HASNESTED:[0-9]+]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "HasNested", +// CHECK-SAME: elements: ![[MEMBERS:[0-9]+]], +// +// CHECK: ![[MEMBERS]] = !{![[INNERENUM]], ![[INNERTYPEDEF:[0-9]+]], ![[UNNAMEDENUM:[0-9]+]], ![[INNERSTRUCT:[0-9]+]]} +// +// CHECK: ![[INNERTYPEDEF]] = !DIDerivedType(tag: DW_TAG_typedef, name: "InnerTypedef", scope: ![[HASNESTED]]{{.*}}) +// +// CHECK: ![[UNNAMEDENUM]] = !DICompositeType(tag: DW_TAG_enumeration_type, scope: ![[HASNESTED]], +// CHECK-SAME: elements: ![[UNNAMEDMEMBERS:[0-9]+]], +// CHECK: ![[UNNAMEDMEMBERS]] = !{![[INNERENUMERATOR:[0-9]+]]} +// CHECK: ![[INNERENUMERATOR]] = !DIEnumerator(name: "InnerEnumerator", value: 2) +// +// CHECK: ![[INNERSTRUCT]] = !DICompositeType(tag: DW_TAG_structure_type, name: "InnerStruct" +// CHECK-SAME: flags: DIFlagFwdDecl |