Index: libiberty/testsuite/demangle-expected |
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected |
index 70abf681ae8fa254fcbc42afa3c43a87374eb79e..58c1368187754e4993d111f2e1a4a7d9ab97c105 100644 |
--- a/libiberty/testsuite/demangle-expected |
+++ b/libiberty/testsuite/demangle-expected |
@@ -3935,7 +3935,7 @@ _Z1tIlEDTplcvT_Li5EclL_Z1qsELi6EEEv |
decltype (((long)(5))+(q(6))) t<long>() |
# test for expansion of function parameter pack |
--format=gnu-v3 |
-_Z1gIIidEEDTclL_Z1fEspplfp_Li1EEEDpT_ |
+_Z1gIJidEEDTclL_Z1fEspplfp_Li1EEEDpT_ |
decltype (f(({parm#1}+(1))...)) g<int, double>(int, double) |
# lambda tests |
--format=gnu-v3 |
@@ -4018,6 +4018,69 @@ K<1, &S::m>::f() |
--format=gnu-v3 |
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_ |
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_ |
+# A pack expansion is substitutable. |
+--format=gnu-v3 |
+_Z1fIJiEiEv1AIJDpT_EET0_S4_ |
+void f<int, int>(A<int>, int, int) |
+# So is decltype. |
+--format=gnu-v3 |
+_Z1fIiiEDTcvT__EET0_S2_ |
+decltype ((int)()) f<int, int>(int, int) |
+# And vector. |
+--format=gnu-v3 |
+_Z1fDv4_iS_ |
+f(int __vector(4), int __vector(4)) |
+--format=gnu-v3 |
+_Z2f1Ii1AEDTdsfp_fp0_ET0_MS2_T_ |
+decltype ({parm#1}.*{parm#2}) f1<int, A>(A, int A::*) |
+--format=gnu-v3 |
+_Z2f2IiEDTquL_Z1bEfp_trET_ |
+decltype (b?{parm#1} : (throw)) f2<int>(int) |
+--format=gnu-v3 |
+_Z6check1IiEvP6helperIXsznw_T_EEE |
+void check1<int>(helper<sizeof (new int)>*) |
+--format=gnu-v3 |
+_Z6check2IiEvP6helperIXszgsnw_T_piEEE |
+void check2<int>(helper<sizeof (::new int())>*) |
+--format=gnu-v3 |
+_Z6check3IiEvP6helperIXsznwadL_Z1iE_T_piLi1EEEE |
+void check3<int>(helper<sizeof (new (&i) int(1))>*) |
+--format=gnu-v3 |
+_Z6check4IiEvP6helperIXszna_A1_T_EEE |
+void check4<int>(helper<sizeof (new int [1])>*) |
+--format=gnu-v3 |
+_Z6check5IiEvP6helperIXszna_A1_T_piEEE |
+void check5<int>(helper<sizeof (new int [1]())>*) |
+--format=gnu-v3 |
+_Z1fIiEDTcmgsdlfp_psfp_EPT_ |
+decltype ((::delete {parm#1}),(+{parm#1})) f<int>(int*) |
+--format=gnu-v3 |
+_Z1fIiEDTcmdafp_psfp_EPT_ |
+decltype ((delete[] {parm#1}),(+{parm#1})) f<int>(int*) |
+--format=gnu-v3 |
+_ZN1AdlEPv |
+A::operator delete(void*) |
+--format=gnu-v3 |
+_Z2f1IiEDTppfp_ET_ |
+decltype ({parm#1}++) f1<int>(int) |
+--format=gnu-v3 |
+_Z2f1IiEDTpp_fp_ET_ |
+decltype (++{parm#1}) f1<int>(int) |
+--format=gnu-v3 |
+_Z2f1IiEDTcl1gfp_ilEEET_ |
+decltype (g({parm#1}, {})) f1<int>(int) |
+--format=gnu-v3 |
+_Z2f1IiEDTnw_T_ilEES0_ |
+decltype (new int{}) f1<int>(int) |
+--format=gnu-v3 |
+_Zli2_wPKc |
+operator"" _w(char const*) |
+--format=gnu-v3 |
+_Z1fIiEDTnw_Dapifp_EET_ |
+decltype (new auto({parm#1})) f<int>(int) |
+--format=gnu-v3 |
+_Z1fIiERDaRKT_S1_ |
+auto& f<int>(int const&, int) |
# |
# Ada (GNAT) tests. |
# |
@@ -4203,3 +4266,7 @@ foo |
_Z1fIKFvvES0_Evv |
void f<void () const, void ()>() |
f<void () const, void ()> |
+# |
+--format=gnu-v3 |
+_ZN4modc6parser8sequenceINS_9astParser13LocatedParserINS0_9ParserRefINS2_UlRNS2_16TokenParserInputEE_EEEEEINS0_14OptionalParserINS2_18ListParserTemplateILNS_6tokens5Token4TypeE4EXadL_ZNSD_Ut_13parenthesizedEEEE6ParserINS4_INS0_6ParserIS5_NS_3ast10ExpressionEEEEEEEEENSA_INS4_INS2_22OneOfKeywordsToTParserINSJ_5StyleEEEEEEENS0_14SequenceParserIS5_INS0_18ExactElementParserIS5_EENSA_ISM_EEEEENS0_14RepeatedParserINS4_INS0_15TransformParserINSU_IS5_INS4_INSP_INSJ_10Annotation12RelationshipEEEEESX_EEENS2_UlNS2_3LocES12_ONS_5MaybeISK_EEE19_EEEEELb0EEEEEENSU_INS0_17ExtractParserTypeIT_E9InputTypeEINS0_8MaybeRefIS1F_E4TypeEDpNS1I_IT0_E4TypeEEEEOS1F_DpOS1L_ |
+modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::parser::ExtractParserType<modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> > >::InputType, modc::parser::MaybeRef<modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}>::Type, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false><modc::parser::OptionalParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > > > >::Type, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false><modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> ><modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> > > >::Type, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false><modc::parser::SequenceParser<modc::astParser::TokenParserInput<modc::parser::ExactElementParser<modc::astParser::TokenParserInput>, modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> ><modc::ast::Expression> > > >::Type, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false><modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false> >::Type> modc::parser::sequence<modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> >, modc::parser::OptionalParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > > >, modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> ><modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> > >, modc::parser::SequenceParser<modc::astParser::TokenParserInput<modc::parser::ExactElementParser<modc::astParser::TokenParserInput>, modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> ><modc::ast::Expression> > >, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false> >(modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}&&, (modc::parser::ExtractParserType<modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> > >&&)...) |