diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2012-10-05 01:49:33 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2012-10-05 01:49:33 +0000 |
commit | 9018ef709e798ad49957fc808744aee4ecf52b5f (patch) | |
tree | 5588fb1960db947948cfea4d58730ad030a285ea /clang/test/CodeGenCXX/debug-info-enum-class.cpp | |
parent | c6c86c43f9fe33e50428d0f08fc6dd44c85fa2e2 (diff) | |
download | bcm5719-llvm-9018ef709e798ad49957fc808744aee4ecf52b5f.tar.gz bcm5719-llvm-9018ef709e798ad49957fc808744aee4ecf52b5f.zip |
Make sure to generate the right kind of MDNode for enum forward declarations.
PR14029, clang part.
llvm-svn: 165289
Diffstat (limited to 'clang/test/CodeGenCXX/debug-info-enum-class.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/debug-info-enum-class.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/test/CodeGenCXX/debug-info-enum-class.cpp b/clang/test/CodeGenCXX/debug-info-enum-class.cpp index 6f88439b1ee..fd243abb2e8 100644 --- a/clang/test/CodeGenCXX/debug-info-enum-class.cpp +++ b/clang/test/CodeGenCXX/debug-info-enum-class.cpp @@ -12,4 +12,18 @@ D d; // CHECK: metadata !{i32 {{.*}}, null, metadata !"A", metadata !4, i32 3, i64 32, i64 32, i32 0, i32 0, metadata !5, metadata !6, i32 0, i32 0} ; [ DW_TAG_enumeration_type ] // CHECK: metadata !{i32 {{.*}}, null, metadata !"B", metadata !4, i32 4, i64 64, i64 64, i32 0, i32 0, metadata !9, metadata !10, i32 0, i32 0} ; [ DW_TAG_enumeration_type ] // CHECK: metadata !{i32 {{.*}}, null, metadata !"C", metadata !4, i32 5, i64 32, i64 32, i32 0, i32 0, null, metadata !13, i32 0, i32 0} ; [ DW_TAG_enumeration_type ] -// CHECK: metadata !{i32 {{.*}}, null, metadata !"D", metadata !4, i32 6, i64 16, i64 16, i32 0, i32 4, null, metadata !16, i32 0, i32 0} ; [ DW_TAG_enumeration_type ] +// CHECK: metadata !{i32 {{.*}}, null, metadata !"D", metadata !4, i32 6, i64 16, i64 16, i32 0, i32 4, null, null, i32 0} ; [ DW_TAG_enumeration_type ] + +namespace PR14029 { + // Make sure this doesn't crash/assert. + template <typename T> struct Test { + enum class Tag { + test = 0 + }; + Test() { + auto t = Tag::test; + } + Tag tag() const { return static_cast<Tag>(1); } + }; + Test<int> t; +} |