From: Nico Weber Date: Tue, 4 Jun 2019 18:06:28 +0000 (+0000) Subject: llvm-undname: Add test coverage for demangleInitFiniStub() X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8b3a59a1a38c75d8ba1fd3b2f76044b853c8476e;p=llvm llvm-undname: Add test coverage for demangleInitFiniStub() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362536 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Demangle/MicrosoftDemangle.cpp b/lib/Demangle/MicrosoftDemangle.cpp index 450c95ff8a1..c8f7502ce2c 100644 --- a/lib/Demangle/MicrosoftDemangle.cpp +++ b/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/test/Demangle/invalid-manglings.test b/test/Demangle/invalid-manglings.test index 1cc192601a4..8887b2cd20c 100644 --- a/test/Demangle/invalid-manglings.test +++ b/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/test/Demangle/ms-operators.test b/test/Demangle/ms-operators.test index 6a22ebda171..71a3a1305b4 100644 --- a/test/Demangle/ms-operators.test +++ b/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)