summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Demangle
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2017-01-20 03:54:04 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2017-01-20 03:54:04 +0000
commit4d0d252288592ba41ef8ae5f1427d9b32c9c1e7f (patch)
treeb3a9504442cfeb69112dd3596664d26f48f61476 /llvm/lib/Demangle
parent8f2aca388b708325b488be548ebc0976f9358edc (diff)
downloadbcm5719-llvm-4d0d252288592ba41ef8ae5f1427d9b32c9c1e7f.tar.gz
bcm5719-llvm-4d0d252288592ba41ef8ae5f1427d9b32c9c1e7f.zip
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. llvm-svn: 292573
Diffstat (limited to 'llvm/lib/Demangle')
-rw-r--r--llvm/lib/Demangle/ItaniumDemangle.cpp11
1 files changed, 1 insertions, 10 deletions
diff --git a/llvm/lib/Demangle/ItaniumDemangle.cpp b/llvm/lib/Demangle/ItaniumDemangle.cpp
index 097b6ca2e08..b078ffee4a5 100644
--- a/llvm/lib/Demangle/ItaniumDemangle.cpp
+++ b/llvm/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()) {
OpenPOWER on IntegriCloud