[llvm] r292965 - Demangle: avoid butchering parameter type

Saleem Abdulrasool via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 24 10:52:19 PST 2017


Author: compnerd
Date: Tue Jan 24 12:52:19 2017
New Revision: 292965

URL: http://llvm.org/viewvc/llvm-project?rev=292965&view=rev
Log:
Demangle: avoid butchering parameter type

When demangling a CV-qualified function type with a final parameter with
a reference type, we would insert the CV qualification on the parameter
rather than the function, and in the process adjust the insertion point
by one extra, splitting the type name.  This avoids doing so, even
though the attribution is still incorrect.

Modified:
    llvm/trunk/lib/Demangle/ItaniumDemangle.cpp

Modified: llvm/trunk/lib/Demangle/ItaniumDemangle.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Demangle/ItaniumDemangle.cpp?rev=292965&r1=292964&r2=292965&view=diff
==============================================================================
--- llvm/trunk/lib/Demangle/ItaniumDemangle.cpp (original)
+++ llvm/trunk/lib/Demangle/ItaniumDemangle.cpp Tue Jan 24 12:52:19 2017
@@ -1665,9 +1665,9 @@ static const char *parse_type(const char
             if (is_function) {
               size_t p = db.names[k].second.size();
               if (db.names[k].second[p - 2] == '&')
-                p -= 3;
-              else if (db.names[k].second.back() == '&')
                 p -= 2;
+              else if (db.names[k].second.back() == '&')
+                p -= 1;
               if (cv & 1) {
                 db.names[k].second.insert(p, " const");
                 p += 6;




More information about the llvm-commits mailing list