summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Demangle
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2019-01-02 18:33:12 +0000
committerZachary Turner <zturner@google.com>2019-01-02 18:33:12 +0000
commitba797b6daed513b6c5a560976766767d795036c7 (patch)
treec044767dc0ef8f73bdc017c51d39e9d98799cd23 /llvm/lib/Demangle
parentb3130b4fdf5824ec9b33eaac580a57fa8edd1147 (diff)
downloadbcm5719-llvm-ba797b6daed513b6c5a560976766767d795036c7.tar.gz
bcm5719-llvm-ba797b6daed513b6c5a560976766767d795036c7.zip
[MS Demangler] Add a flag for dumping types without tag specifier.
Sometimes it's useful to be able to output demangled names without tag specifiers like "struct", "class", etc. This patch adds a flag enabling this. llvm-svn: 350241
Diffstat (limited to 'llvm/lib/Demangle')
-rw-r--r--llvm/lib/Demangle/MicrosoftDemangleNodes.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangleNodes.cpp b/llvm/lib/Demangle/MicrosoftDemangleNodes.cpp
index a588dca5b7b..49518ef57d6 100644
--- a/llvm/lib/Demangle/MicrosoftDemangleNodes.cpp
+++ b/llvm/lib/Demangle/MicrosoftDemangleNodes.cpp
@@ -114,10 +114,10 @@ static void outputCallingConvention(OutputStream &OS, CallingConv CC) {
}
}
-std::string Node::toString() const {
+std::string Node::toString(OutputFlags Flags) const {
OutputStream OS;
initializeOutputStream(nullptr, nullptr, OS, 1024);
- this->output(OS, llvm::ms_demangle::OF_Default);
+ this->output(OS, Flags);
OS << '\0';
return {OS.getBuffer()};
}
@@ -510,13 +510,15 @@ void PointerTypeNode::outputPost(OutputStream &OS, OutputFlags Flags) const {
}
void TagTypeNode::outputPre(OutputStream &OS, OutputFlags Flags) const {
- switch (Tag) {
- OUTPUT_ENUM_CLASS_VALUE(TagKind, Class, "class");
- OUTPUT_ENUM_CLASS_VALUE(TagKind, Struct, "struct");
- OUTPUT_ENUM_CLASS_VALUE(TagKind, Union, "union");
- OUTPUT_ENUM_CLASS_VALUE(TagKind, Enum, "enum");
+ if (!(Flags & OF_NoTagSpecifier)) {
+ switch (Tag) {
+ OUTPUT_ENUM_CLASS_VALUE(TagKind, Class, "class");
+ OUTPUT_ENUM_CLASS_VALUE(TagKind, Struct, "struct");
+ OUTPUT_ENUM_CLASS_VALUE(TagKind, Union, "union");
+ OUTPUT_ENUM_CLASS_VALUE(TagKind, Enum, "enum");
+ }
+ OS << " ";
}
- OS << " ";
QualifiedName->output(OS, Flags);
outputQualifiers(OS, Quals, true, false);
}
OpenPOWER on IntegriCloud