[libcxxabi] r201533 - Demangle Dc to decltype(auto) as per the Itanium C++ ABI spec.

Anders Carlsson andersca at mac.com
Mon Feb 17 13:56:02 PST 2014


Author: andersca
Date: Mon Feb 17 15:56:01 2014
New Revision: 201533

URL: http://llvm.org/viewvc/llvm-project?rev=201533&view=rev
Log:
Demangle Dc to decltype(auto) as per the Itanium C++ ABI spec.

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

Modified: libcxxabi/trunk/src/cxa_demangle.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/src/cxa_demangle.cpp?rev=201533&r1=201532&r2=201533&view=diff
==============================================================================
--- libcxxabi/trunk/src/cxa_demangle.cpp (original)
+++ libcxxabi/trunk/src/cxa_demangle.cpp Mon Feb 17 15:56:01 2014
@@ -352,6 +352,7 @@ parse_substitution(const char* first, co
 //                ::= Di   # char32_t
 //                ::= Ds   # char16_t
 //                ::= Da   # auto (in dependent new-expressions)
+//                ::= Dc   # decltype(auto)
 //                ::= Dn   # std::nullptr_t (i.e., decltype(nullptr))
 //                ::= u <source-name>    # vendor extended type
 
@@ -487,6 +488,10 @@ parse_builtin_type(const char* first, co
                     db.names.push_back("auto");
                     first += 2;
                     break;
+                case 'c':
+                    db.names.push_back("decltype(auto)");
+                    first += 2;
+                    break;
                 case 'n':
                     db.names.push_back("std::nullptr_t");
                     first += 2;

Modified: libcxxabi/trunk/test/test_demangle.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/test_demangle.cpp?rev=201533&r1=201532&r2=201533&view=diff
==============================================================================
--- libcxxabi/trunk/test/test_demangle.cpp (original)
+++ libcxxabi/trunk/test/test_demangle.cpp Mon Feb 17 15:56:01 2014
@@ -29585,6 +29585,7 @@ const char* cases[][2] =
     {"_ZNK1AIJ1Z1Y1XEEcv1BIJDpPT_EEIJS2_S1_S0_EEEv", "A<Z, Y, X>::operator B<X*, Y*, Z*><X, Y, Z>() const"},
     {"_ZNK3Ncr6Silver7Utility6detail12CallOnThreadIZ53-[DeploymentSetupController handleManualServerEntry:]E3$_5EclIJEEEDTclclL_ZNS2_4getTIS4_EERT_vEEspclsr3stdE7forwardIT_Efp_EEEDpOSA_", "decltype(-[DeploymentSetupController handleManualServerEntry:]::$_5& Ncr::Silver::Utility::detail::getT<-[DeploymentSetupController handleManualServerEntry:]::$_5>()()(std::forward<-[DeploymentSetupController handleManualServerEntry:]::$_5>(fp))) Ncr::Silver::Utility::detail::CallOnThread<-[DeploymentSetupController handleManualServerEntry:]::$_5>::operator()<>(-[DeploymentSetupController handleManualServerEntry:]::$_5&&) const"},
     {"_Zli2_xy", "operator\"\" _x(unsigned long long)"},
+    {"_Z1fIiEDcT_", "decltype(auto) f<int>(int)"},
 };
 
 const unsigned N = sizeof(cases) / sizeof(cases[0]);





More information about the cfe-commits mailing list