diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-05-06 07:33:30 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-05-06 07:33:30 +0000 |
commit | 945143441c0cdf155eeb3546ea3e6f33d7133295 (patch) | |
tree | 25a70270811dc9b6db959462eb9f0bf061d619f5 /test/CodeGenCXX/debug-info-enum-class.cpp | |
parent | 9ee9b9e17b10ebd599850bfc65e088d9da839a57 (diff) |
DebugInfo: Emit the definition of enums when the definition preceeds the declaration and initial use.
This regressed a little further 208055 though it was already a little
broken.
While the requiresCompleteType optimization should be implemented here.
Future (possibly near future) work.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208065 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/debug-info-enum-class.cpp')
-rw-r--r-- | test/CodeGenCXX/debug-info-enum-class.cpp | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/test/CodeGenCXX/debug-info-enum-class.cpp b/test/CodeGenCXX/debug-info-enum-class.cpp index 0f4b09afb5..af62487689 100644 --- a/test/CodeGenCXX/debug-info-enum-class.cpp +++ b/test/CodeGenCXX/debug-info-enum-class.cpp @@ -12,7 +12,6 @@ D d; // CHECK: ; [ DW_TAG_enumeration_type ] [A] [line 3, size 32, align 32, offset 0] [def] [from int] // CHECK: ; [ DW_TAG_enumeration_type ] [B] [line 4, size 64, align 64, offset 0] [def] [from long unsigned int] // CHECK: ; [ DW_TAG_enumeration_type ] [C] [line 5, size 32, align 32, offset 0] [def] [from ] -// CHECK: ; [ DW_TAG_enumeration_type ] [D] [line 6, size 16, align 16, offset 0] [decl] [from ] namespace PR14029 { // Make sure this doesn't crash/assert. @@ -27,3 +26,45 @@ namespace PR14029 { }; Test<int> t; } + +namespace test2 { +// FIXME: this should just be a declaration under -fno-standalone-debug +// CHECK: metadata !{i32 {{[^,]*}}, {{[^,]*}}, metadata [[TEST2:![0-9]*]], {{.*}}, metadata [[TEST_ENUMS:![0-9]*]], {{[^,]*}}, null, null, metadata !"_ZTSN5test21EE"} ; [ DW_TAG_enumeration_type ] [E] +// CHECK: [[TEST2]] = {{.*}} ; [ DW_TAG_namespace ] [test2] +// CHECK: [[TEST_ENUMS]] = metadata !{metadata [[TEST_E:![0-9]*]]} +// CHECK: [[TEST_E]] = {{.*}}, metadata !"e", i64 0} ; [ DW_TAG_enumerator ] [e :: 0] +enum E : int; +void func(E *) { +} +enum E : int { e }; +} + +namespace test3 { +// FIXME: this should just be a declaration under -fno-standalone-debug +// CHECK: metadata !{i32 {{[^,]*}}, {{[^,]*}}, metadata [[TEST3:![0-9]*]], {{.*}}, metadata [[TEST_ENUMS]], {{[^,]*}}, null, null, metadata !"_ZTSN5test31EE"} ; [ DW_TAG_enumeration_type ] [E] +// CHECK: [[TEST3]] = {{.*}} ; [ DW_TAG_namespace ] [test3] +enum E : int { e }; +void func(E *) { +} +} + +namespace test4 { +// CHECK: metadata !{i32 {{[^,]*}}, {{[^,]*}}, metadata [[TEST4:![0-9]*]], {{.*}}, metadata [[TEST_ENUMS]], {{[^,]*}}, null, null, metadata !"_ZTSN5test41EE"} ; [ DW_TAG_enumeration_type ] [E] +// CHECK: [[TEST4]] = {{.*}} ; [ DW_TAG_namespace ] [test4] +enum E : int; +void f1(E *) { +} +enum E : int { e }; +void f2(E) { +} +} + +// CHECK: ; [ DW_TAG_enumeration_type ] [D] [line 6, size 16, align 16, offset 0] [decl] [from ] + +namespace test5 { +// CHECK: metadata !{i32 {{[^,]*}}, {{[^,]*}}, metadata [[TEST5:![0-9]*]], {{.*}}, null, {{[^,]*}}, null, null, metadata !"_ZTSN5test51EE"} ; [ DW_TAG_enumeration_type ] [E] +// CHECK: [[TEST5]] = {{.*}} ; [ DW_TAG_namespace ] [test5] +enum E : int; +void f1(E *) { +} +} |