diff options
| author | Nico Weber <nicolasweber@gmx.de> | 2019-06-04 19:10:08 +0000 |
|---|---|---|
| committer | Nico Weber <nicolasweber@gmx.de> | 2019-06-04 19:10:08 +0000 |
| commit | 1dce82636c9241b8208abe05ba02e499424338d5 (patch) | |
| tree | 93eadc38febf04b3d0f32bf609b6fff79168dcf5 /llvm/lib/Demangle/MicrosoftDemangle.cpp | |
| parent | 463854846853c3e4e099d31c51edec18e00730c0 (diff) | |
| download | bcm5719-llvm-1dce82636c9241b8208abe05ba02e499424338d5.tar.gz bcm5719-llvm-1dce82636c9241b8208abe05ba02e499424338d5.zip | |
llvm-undname: Correctly demangle vararg parameters
FunctionSignatureNode already had an IsVariadic field,
but it wasn't used anywhere yet. Set it and use it.
llvm-svn: 362541
Diffstat (limited to 'llvm/lib/Demangle/MicrosoftDemangle.cpp')
| -rw-r--r-- | llvm/lib/Demangle/MicrosoftDemangle.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp index e28420c4a13..bf7d77638f3 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -1826,7 +1826,7 @@ FunctionSignatureNode *Demangler::demangleFunctionType(StringView &MangledName, if (!IsStructor) FTy->ReturnType = demangleType(MangledName, QualifierMangleMode::Result); - FTy->Params = demangleFunctionParameterList(MangledName); + FTy->Params = demangleFunctionParameterList(MangledName, FTy->IsVariadic); FTy->IsNoexcept = demangleThrowSpecification(MangledName); @@ -2094,8 +2094,8 @@ ArrayTypeNode *Demangler::demangleArrayType(StringView &MangledName) { } // Reads a function's parameters. -NodeArrayNode * -Demangler::demangleFunctionParameterList(StringView &MangledName) { +NodeArrayNode *Demangler::demangleFunctionParameterList(StringView &MangledName, + bool &IsVariadic) { // Empty parameter list. if (MangledName.consumeFront('X')) return nullptr; @@ -2152,8 +2152,7 @@ Demangler::demangleFunctionParameterList(StringView &MangledName) { return NA; if (MangledName.consumeFront('Z')) { - // This is a variadic parameter list. We probably need a variadic node to - // append to the end. + IsVariadic = true; return NA; } |

