[libcxxabi] r338747 - [itanium demangler] Support dot suffixes on block invocation functions

Erik Pilkington via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 2 10:45:01 PDT 2018


Author: epilk
Date: Thu Aug  2 10:45:01 2018
New Revision: 338747

URL: http://llvm.org/viewvc/llvm-project?rev=338747&view=rev
Log:
[itanium demangler] Support dot suffixes on block invocation functions

rdar://32378759

Modified:
    libcxxabi/trunk/src/cxa_demangle.cpp
    libcxxabi/trunk/test/test_demangle.pass.cpp

Modified: libcxxabi/trunk/src/cxa_demangle.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/src/cxa_demangle.cpp?rev=338747&r1=338746&r2=338747&view=diff
==============================================================================
--- libcxxabi/trunk/src/cxa_demangle.cpp (original)
+++ libcxxabi/trunk/src/cxa_demangle.cpp Thu Aug  2 10:45:01 2018
@@ -4935,6 +4935,8 @@ Node *Db::parse() {
     bool RequireNumber = consumeIf('_');
     if (parseNumber().empty() && RequireNumber)
       return nullptr;
+    if (look() == '.')
+      First = Last;
     if (numLeft() != 0)
       return nullptr;
     return make<SpecialName>("invocation function for block in ", Encoding);

Modified: libcxxabi/trunk/test/test_demangle.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/test_demangle.pass.cpp?rev=338747&r1=338746&r2=338747&view=diff
==============================================================================
--- libcxxabi/trunk/test/test_demangle.pass.cpp (original)
+++ libcxxabi/trunk/test/test_demangle.pass.cpp Thu Aug  2 10:45:01 2018
@@ -29753,6 +29753,8 @@ const char* cases[][2] =
     // reference collapsing:
     {"_Z1fIR1SEiOT_", "int f<S&>(S&)"},
     {"_Z1fIJR1SS0_EEiDpOT_", "int f<S&, S>(S&, S&&)"},
+
+    {"___Z3foo_block_invoke.25", "invocation function for block in foo"},
 };
 
 const unsigned N = sizeof(cases) / sizeof(cases[0]);




More information about the cfe-commits mailing list