[Bug c++/77950] GCC produces un-demanglable symbols with [] (auto&) { ... } lambdas in templates

2021-12-03 Thread ian at airs dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77950

--- Comment #2 from Ian Lance Taylor  ---
Just a note that my Go demangler does demangle this symbol now, producing

ossia::vec_merger_impl<2>::operator() > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >
>(eggs::variants::variant > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >
const&)::{lambda(auto:1&)#1}&&
eggs::variants::detail::forward::operator() > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >
>(eggs::variants::variant > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >
const&)::{lambda(auto:1&)#1}&&>(std::remove_reference::operator() > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >
>(eggs::variants::variant > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >
const&)::{lambda(auto:1&)#1}&&>::type&)

[Bug c++/77950] GCC produces un-demanglable symbols with [] (auto&) { ... } lambdas in templates

2016-10-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77950

Markus Trippelsdorf  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2016-10-12
 CC||trippels at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Markus Trippelsdorf  ---
Confirmed.

libcxxabi's demangler gives:

eggs::variants::variant > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >&&
eggs::variants::detail::forward > >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >,
eggs::variants::variant,
ossia::strong_value,
ossia::strong_value, ossia::strong_value,
ossia::strong_value, ossia::strong_value
>,
eggs::variants::variant > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >,
eggs::variants::variant,
ossia::strong_value, ossia::strong_value >,
eggs::variants::variant,
ossia::strong_value >,
eggs::variants::variant,
ossia::strong_value, ossia::strong_value,
ossia::strong_value, ossia::strong_value,
ossia::strong_value, ossia::strong_value,
ossia::strong_value >,
eggs::variants::variant,
ossia::strong_value, ossia::strong_value,
ossia::strong_value > >
ossia::vec_merger_impl<2>::operator() > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >
>(eggs::variants::variant > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > > >
const&)::'lambda'(eggs::variants::variant > >, ossia::strong_value > >, ossia::strong_value
> >, ossia::strong_value > >,
ossia::strong_value > >,
ossia::strong_value > >
>&)&&>(std::remove_reference
> >, ossia::strong_value > 
> >>, ossia::strong_value > >, 
> >ossia::strong_value > >, 
> >ossia::strong_value > >, 
> >ossia::strong_value
> > > >::type&)

libiberty overflows the stack and Ian's Go demangler doesn't handle the symbol.