diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2017-01-20 03:54:04 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2017-01-20 03:54:04 +0000 |
commit | f2a3664b8a879aa75d335a712110033a29e25a63 (patch) | |
tree | d3cd34d733d234d19c1d4368c342a2f1c004a9f7 /lib/Demangle | |
parent | 035363ac9156808cbf3eaa603c6be24f25dcee39 (diff) |
Revert "Demangle: only demangle mangled symbols"
This reverts SVN r286795. This was incorrect the demangler is expected
to be able to demangle types as well as functions. This makes the
behaviour of itaniumDemangle similar to __cxa_demangle once more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292573 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Demangle')
-rw-r--r-- | lib/Demangle/ItaniumDemangle.cpp | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/lib/Demangle/ItaniumDemangle.cpp b/lib/Demangle/ItaniumDemangle.cpp index 097b6ca2e08..b078ffee4a5 100644 --- a/lib/Demangle/ItaniumDemangle.cpp +++ b/lib/Demangle/ItaniumDemangle.cpp @@ -4225,20 +4225,11 @@ char *llvm::itaniumDemangle(const char *mangled_name, char *buf, size_t *n, *status = invalid_args; return nullptr; } - - size_t len = std::strlen(mangled_name); - if (len < 2 || strncmp(mangled_name, "_Z", 2)) { - if (len < 4 || strncmp(mangled_name, "___Z", 4)) { - if (status) - *status = invalid_mangled_name; - return nullptr; - } - } - size_t internal_size = buf != nullptr ? *n : 0; Db db; db.template_param.emplace_back(); int internal_status = success; + size_t len = std::strlen(mangled_name); demangle(mangled_name, mangled_name + len, db, internal_status); if (internal_status == success && db.fix_forward_references && !db.template_param.empty() && !db.template_param.front().empty()) { |