summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2019-06-04 18:06:28 +0000
committerNico Weber <nicolasweber@gmx.de>2019-06-04 18:06:28 +0000
commit878df1c2a9803e2b7965d52f5b21fb294dd18607 (patch)
treef25b54846eee4dece43589b22ffb95c60bb36124
parent137de380091a7a756c44227ea68dad9298a3ba2b (diff)
downloadbcm5719-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.cpp4
-rw-r--r--llvm/test/Demangle/invalid-manglings.test10
-rw-r--r--llvm/test/Demangle/ms-operators.test7
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)
OpenPOWER on IntegriCloud