diff options
Diffstat (limited to 'lld/Common/Strings.cpp')
| -rw-r--r-- | lld/Common/Strings.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/lld/Common/Strings.cpp b/lld/Common/Strings.cpp index 5cb44e9a8fe..4b40abeda5e 100644 --- a/lld/Common/Strings.cpp +++ b/lld/Common/Strings.cpp @@ -22,18 +22,16 @@ using namespace lld; Optional<std::string> lld::demangleItanium(StringRef name) { // itaniumDemangle can be used to demangle strings other than symbol // names which do not necessarily start with "_Z". Name can be - // either a C or C++ symbol. Don't call itaniumDemangle if the name + // either a C or C++ symbol. Don't call demangle if the name // does not look like a C++ symbol name to avoid getting unexpected // result for a C symbol that happens to match a mangled type name. if (!name.startswith("_Z")) return None; - char *buf = itaniumDemangle(name.str().c_str(), nullptr, nullptr, nullptr); - if (!buf) + std::string demangled = demangle(name); + if (demangled == name) return None; - std::string s(buf); - free(buf); - return s; + return demangled; } StringMatcher::StringMatcher(ArrayRef<StringRef> pat) { |

