Author: epilk Date: Mon Apr 9 11:32:25 2018 New Revision: 329600 URL: http://llvm.org/viewvc/llvm-project?rev=329600&view=rev Log: [demangler] Support for <data-member-prefix>.
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=329600&r1=329599&r2=329600&view=diff ============================================================================== --- libcxxabi/trunk/src/cxa_demangle.cpp (original) +++ libcxxabi/trunk/src/cxa_demangle.cpp Mon Apr 9 11:32:25 2018 @@ -2639,6 +2639,8 @@ Node *Db::parseCtorDtorName(Node *&SoFar // ::= <prefix> <data-member-prefix> // extension ::= L // +// <data-member-prefix> := <member source-name> [<template-args>] M +// // <template-prefix> ::= <prefix> <template unqualified-name> // ::= <template-param> // ::= <substitution> @@ -2669,6 +2671,13 @@ Node *Db::parseNestedName(NameState *Sta while (!consumeIf('E')) { consumeIf('L'); // extension + // <data-member-prefix> := <member source-name> [<template-args>] M + if (consumeIf('M')) { + if (SoFar == nullptr) + return nullptr; + continue; + } + // ::= <template-param> if (look() == 'T') { Node *TP = parseTemplateParam(); Modified: libcxxabi/trunk/test/test_demangle.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/test_demangle.pass.cpp?rev=329600&r1=329599&r2=329600&view=diff ============================================================================== --- libcxxabi/trunk/test/test_demangle.pass.cpp (original) +++ libcxxabi/trunk/test/test_demangle.pass.cpp Mon Apr 9 11:32:25 2018 @@ -29740,6 +29740,9 @@ const char* cases[][2] = {"_ZN1Scv7MuncherIJDpPT_EEIJFivEA_iEEEv", "S::operator Muncher<int (*)(), int (*) []><int (), int []>()"}, {"_Z2f8IiJ8identityIiES0_IfEEEvRAsPiDpT0_T_DpNS3_4typeEE_i", "void f8<int, identity<int>, identity<float> >(int (&) [sizeof... (int, identity<int>, identity<float>, int, identity<int>::type, identity<float>::type)])"}, + + {"_ZNK13StaticMembersIfE1xMUlvE_clEv", "StaticMembers<float>::x::'lambda'()::operator()() const"}, + {"_ZNK10inline_varMUlvE_clEv", "inline_var::'lambda'()::operator()() const"}, }; const unsigned N = sizeof(cases) / sizeof(cases[0]); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits