[MS Demangler] Demangle string literals.
authorZachary Turner <zturner@google.com>
Thu, 16 Aug 2018 16:17:36 +0000 (16:17 +0000)
committerZachary Turner <zturner@google.com>
Thu, 16 Aug 2018 16:17:36 +0000 (16:17 +0000)
commit970fdc3236631a0019d3c4a4bfe07f2a67b29c25
tree9732d64cf1b0469ca02f5cba0e6ae87e6751b6b9
parent83313f8f54b4a0da8fda13bc6e90043b8137bf7f
[MS Demangler] Demangle string literals.

When demangling string literals, Microsoft's undname
simply prints 'string'.  This patch implements string
literal demangling while doing a bit better than this
by decoding as much of the string as possible and
trying to faithfully reproduce the original string
literal definition.

This is a bit tricky because the different character
types char, char16_t, and char32_t are not uniquely
identified by the mangling, so we have to use a
heuristic to try to guess the character type.  But
it works pretty well, and many tests are added to
illustrate the behavior.

Differential Revision: https://reviews.llvm.org/D50806

llvm-svn: 339892
llvm/lib/Demangle/MicrosoftDemangle.cpp
llvm/test/Demangle/ms-string-literals.test [new file with mode: 0644]