]> granicus.if.org Git - llvm/commitdiff
Demangle: avoid butchering parameter type
authorSaleem Abdulrasool <compnerd@compnerd.org>
Tue, 24 Jan 2017 18:52:19 +0000 (18:52 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Tue, 24 Jan 2017 18:52:19 +0000 (18:52 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292965 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Demangle/ItaniumDemangle.cpp

index b078ffee4a5825013fbc3a62b7f587cd2ff16475..c7a151bd27fc3d7f59238fd512a4642b7385e864 100644 (file)
@@ -1665,9 +1665,9 @@ static const char *parse_type(const char *first, const char *last, C &db) {
             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;