https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70909
--- Comment #34 from Mark Wielaard <mark at gcc dot gnu.org> --- (In reply to Mark Wielaard from comment #26) > Created attachment 40233 [details] > d_print_comp with 1 level of recursion protection > > This is the variant that allows 1 level of recursion (with an xxx ??? to why > 1 level). I figured out why it should be d_printing > 1. For function types we print the DEMANGLE_COMPONENT_FUNCTION_TYPE twice with different options depending on whether or not we want the return type printed or not. If we apply Nathan's lambda patch then we need d_printing > 2. With that we get two more symbols demangled. - PR70517 _ZSt4moveIRZN11tconcurrent6futureIvE4thenIZ5awaitIS2_EDaOT_EUlRKS6_E_EENS1_INSt5decayIDTclfp_defpTEEE4typeEEES7_EUlvE_EONSt16remove_referenceIS6_E4typeES7_ - PR68700 _ZN8futurizeI13frozen_schemaE5applyIRZN7seastar7shardedIN7service13storage_proxyEE9invoke_onIZZNS6_22init_messaging_serviceEvENKUljN5utils4UUIDEE8_clEjSA_EUlOT_E_6futureIJS0_EEEET0_jSD_EUlvE_JEEESG_SD_DpOT0_ So that leaves us with only two unexplained symbols that don't demangle PR61460 and PR67738. I haven't figured out yet why with the lambda patch applied we need to allow 2 levels of recursion.