Revert "Demangle: only demangle mangled symbols"
authorSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 20 Jan 2017 03:54:04 +0000 (03:54 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 20 Jan 2017 03:54:04 +0000 (03:54 +0000)
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

llvm/lib/Demangle/ItaniumDemangle.cpp

index 097b6ca..b078ffe 100644 (file)
@@ -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()) {