diff options
| author | Zachary Turner <zturner@google.com> | 2018-08-14 18:54:28 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2018-08-14 18:54:28 +0000 |
| commit | 2bbb23ba3b7fdb825e09aaca9d6b4e72e5dd3eb7 (patch) | |
| tree | 1f22185b08f3d3d6ad7f32556001ac1d158b45d3 /llvm/lib | |
| parent | a0fd9c3e9a51c84019fca1b3e4917ca96e0e1742 (diff) | |
| download | bcm5719-llvm-2bbb23ba3b7fdb825e09aaca9d6b4e72e5dd3eb7.tar.gz bcm5719-llvm-2bbb23ba3b7fdb825e09aaca9d6b4e72e5dd3eb7.zip | |
[MS Demangler] Fix some minor formatting bugs.
1) We print __restrict twice on member pointers. This is fixed
and relevant tests are re-enabled.
2) Several tests were disabled because of printing slightly
different output than undname. These were confirmed to be
bugs in undname, so we just re-enable the tests.
3) The test for printing reference temporaries is re-enabled. This
is a clang mangling extension, so we have some flexibility with
how we demangle it. The output currently looks fine, so we just
re-enable the test with no fixes.
llvm-svn: 339708
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Demangle/MicrosoftDemangle.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp index cab662f98e8..0af93e1519b 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -815,8 +815,6 @@ void MemberPointerType::outputPre(OutputStream &OS, NameResolver &Resolver) { // FIXME: We should output this, but it requires updating lots of tests. // if (Ty.Quals & Q_Pointer64) // OS << " __ptr64"; - if (Quals & Q_Restrict) - OS << " __restrict"; } void MemberPointerType::outputPost(OutputStream &OS, NameResolver &Resolver) { @@ -2028,12 +2026,12 @@ ArrayType *Demangler::demangleArrayType(StringView &MangledName) { } if (MangledName.consumeFront("$$C")) { - if (MangledName.consumeFront("B")) - ATy->Quals = Q_Const; - else if (MangledName.consumeFront("C") || MangledName.consumeFront("D")) - ATy->Quals = Qualifiers(Q_Const | Q_Volatile); - else if (!MangledName.consumeFront("A")) + bool IsMember = false; + std::tie(ATy->Quals, IsMember) = demangleQualifiers(MangledName); + if (IsMember) { Error = true; + return nullptr; + } } ATy->ElementType = demangleType(MangledName, QualifierMangleMode::Drop); |

