diff options
| author | Nico Weber <nicolasweber@gmx.de> | 2019-06-04 18:06:28 +0000 |
|---|---|---|
| committer | Nico Weber <nicolasweber@gmx.de> | 2019-06-04 18:06:28 +0000 |
| commit | 878df1c2a9803e2b7965d52f5b21fb294dd18607 (patch) | |
| tree | f25b54846eee4dece43589b22ffb95c60bb36124 | |
| parent | 137de380091a7a756c44227ea68dad9298a3ba2b (diff) | |
| download | bcm5719-llvm-878df1c2a9803e2b7965d52f5b21fb294dd18607.tar.gz bcm5719-llvm-878df1c2a9803e2b7965d52f5b21fb294dd18607.zip | |
llvm-undname: Add test coverage for demangleInitFiniStub()
llvm-svn: 362536
| -rw-r--r-- | llvm/lib/Demangle/MicrosoftDemangle.cpp | 4 | ||||
| -rw-r--r-- | llvm/test/Demangle/invalid-manglings.test | 10 | ||||
| -rw-r--r-- | llvm/test/Demangle/ms-operators.test | 7 |
3 files changed, 19 insertions, 2 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp index 450c95ff8a1..c8f7502ce2c 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -465,9 +465,9 @@ SymbolNode *Demangler::demangleSpecialIntrinsic(StringView &MangledName) { case SpecialIntrinsicKind::RttiBaseClassDescriptor: return demangleRttiBaseClassDescriptorNode(Arena, MangledName); case SpecialIntrinsicKind::DynamicInitializer: - return demangleInitFiniStub(MangledName, false); + return demangleInitFiniStub(MangledName, /*IsDestructor=*/false); case SpecialIntrinsicKind::DynamicAtexitDestructor: - return demangleInitFiniStub(MangledName, true); + return demangleInitFiniStub(MangledName, /*IsDestructor=*/true); case SpecialIntrinsicKind::Typeof: case SpecialIntrinsicKind::UdtReturning: // It's unclear which tools produces these manglings, so demangling diff --git a/llvm/test/Demangle/invalid-manglings.test b/llvm/test/Demangle/invalid-manglings.test index 1cc192601a4..8887b2cd20c 100644 --- a/llvm/test/Demangle/invalid-manglings.test +++ b/llvm/test/Demangle/invalid-manglings.test @@ -90,6 +90,16 @@ ; CHECK-NEXT: ??__E?Foo@@0HA@@ ; CHECK-NEXT: error: Invalid mangled name +??__E?i@C@@0HA@ +; CHECK-EMPTY: +; CHECK-NEXT: ??__E?i@C@@0HA@ +; CHECK-NEXT: error: Invalid mangled name + +??__E?Foo@@YAXXZ +; CHECK-EMPTY: +; CHECK-NEXT: ??__E?Foo@@YAXXZ +; CHECK-NEXT: error: Invalid mangled name + ??8@8 ; CHECK-EMPTY: ; CHECK-NEXT: ??8@8 diff --git a/llvm/test/Demangle/ms-operators.test b/llvm/test/Demangle/ms-operators.test index 6a22ebda171..71a3a1305b4 100644 --- a/llvm/test/Demangle/ms-operators.test +++ b/llvm/test/Demangle/ms-operators.test @@ -221,9 +221,16 @@ ??_R4Base@@6B@ ; CHECK: const Base::`RTTI Complete Object Locator' +; Generated for `int Foo = f(4);` at global scope. ??__EFoo@@YAXXZ ; CHECK: void __cdecl `dynamic initializer for 'Foo''(void) +; Generated for +; class C { static int i; }; +; int C::i = f(5); +??__E?i@C@@0HA@@YAXXZ +; CHECK: void __cdecl `dynamic initializer for `private: static int C::i''(void) + ??__FFoo@@YAXXZ ; CHECK: void __cdecl `dynamic atexit destructor for 'Foo''(void) |

