Demangle Dc to decltype(auto) as per the Itanium C++ ABI spec.
llvm-svn: 201533
This commit is contained in:
		
							parent
							
								
									8b7258bdb3
								
							
						
					
					
						commit
						3e107b3bd8
					
				| 
						 | 
					@ -352,6 +352,7 @@ parse_substitution(const char* first, const char* last, C& db)
 | 
				
			||||||
//                ::= Di   # char32_t
 | 
					//                ::= Di   # char32_t
 | 
				
			||||||
//                ::= Ds   # char16_t
 | 
					//                ::= Ds   # char16_t
 | 
				
			||||||
//                ::= Da   # auto (in dependent new-expressions)
 | 
					//                ::= Da   # auto (in dependent new-expressions)
 | 
				
			||||||
 | 
					//                ::= Dc   # decltype(auto)
 | 
				
			||||||
//                ::= Dn   # std::nullptr_t (i.e., decltype(nullptr))
 | 
					//                ::= Dn   # std::nullptr_t (i.e., decltype(nullptr))
 | 
				
			||||||
//                ::= u <source-name>    # vendor extended type
 | 
					//                ::= u <source-name>    # vendor extended type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -487,6 +488,10 @@ parse_builtin_type(const char* first, const char* last, C& db)
 | 
				
			||||||
                    db.names.push_back("auto");
 | 
					                    db.names.push_back("auto");
 | 
				
			||||||
                    first += 2;
 | 
					                    first += 2;
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
 | 
					                case 'c':
 | 
				
			||||||
 | 
					                    db.names.push_back("decltype(auto)");
 | 
				
			||||||
 | 
					                    first += 2;
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
                case 'n':
 | 
					                case 'n':
 | 
				
			||||||
                    db.names.push_back("std::nullptr_t");
 | 
					                    db.names.push_back("std::nullptr_t");
 | 
				
			||||||
                    first += 2;
 | 
					                    first += 2;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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"},
 | 
					    {"_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"},
 | 
					    {"_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)"},
 | 
					    {"_Zli2_xy", "operator\"\" _x(unsigned long long)"},
 | 
				
			||||||
 | 
					    {"_Z1fIiEDcT_", "decltype(auto) f<int>(int)"},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const unsigned N = sizeof(cases) / sizeof(cases[0]);
 | 
					const unsigned N = sizeof(cases) / sizeof(cases[0]);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue