diff options
author | Nico Weber <nicolasweber@gmx.de> | 2019-05-28 14:54:49 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2019-05-28 14:54:49 +0000 |
commit | 88ab281b4d57d2ae965b335afb74d73407c233c7 (patch) | |
tree | f73800c0495dafde40d9aea52302fd6ec0565b21 /llvm/lib/Demangle/MicrosoftDemangle.cpp | |
parent | eb006d3268cb8e2c2d005b45402204d6a203101b (diff) | |
download | bcm5719-llvm-88ab281b4d57d2ae965b335afb74d73407c233c7.tar.gz bcm5719-llvm-88ab281b4d57d2ae965b335afb74d73407c233c7.zip |
llvm-undname: Add support for local static thread guards
llvm-svn: 361835
Diffstat (limited to 'llvm/lib/Demangle/MicrosoftDemangle.cpp')
-rw-r--r-- | llvm/lib/Demangle/MicrosoftDemangle.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp index e596f0cea1c..4abb48e5757 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -293,9 +293,10 @@ Demangler::demangleSpecialTableSymbolNode(StringView &MangledName, } LocalStaticGuardVariableNode * -Demangler::demangleLocalStaticGuard(StringView &MangledName) { +Demangler::demangleLocalStaticGuard(StringView &MangledName, bool IsThread) { LocalStaticGuardIdentifierNode *LSGI = Arena.alloc<LocalStaticGuardIdentifierNode>(); + LSGI->IsThread = IsThread; QualifiedNameNode *QN = demangleNameScopeChain(MangledName, LSGI); LocalStaticGuardVariableNode *LSGVN = Arena.alloc<LocalStaticGuardVariableNode>(); @@ -443,7 +444,9 @@ SymbolNode *Demangler::demangleSpecialIntrinsic(StringView &MangledName) { case SpecialIntrinsicKind::VcallThunk: return demangleVcallThunkNode(MangledName); case SpecialIntrinsicKind::LocalStaticGuard: - return demangleLocalStaticGuard(MangledName); + return demangleLocalStaticGuard(MangledName, /*IsThread=*/false); + case SpecialIntrinsicKind::LocalStaticThreadGuard: + return demangleLocalStaticGuard(MangledName, /*IsThread=*/true); case SpecialIntrinsicKind::RttiTypeDescriptor: { TypeNode *T = demangleType(MangledName, QualifierMangleMode::Result); if (Error) |