public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug demangler/96143] New: C++ demangler should not add a lambda as a substitution @ 2020-07-10 4:27 ian at airs dot com 2020-07-10 12:41 ` [Bug demangler/96143] " nathan at gcc dot gnu.org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: ian at airs dot com @ 2020-07-10 4:27 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96143 Bug ID: 96143 Summary: C++ demangler should not add a lambda as a substitution Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: demangler Assignee: unassigned at gcc dot gnu.org Reporter: ian at airs dot com Target Milestone: --- The C++ demangler adds a lambda as a substitution in d_lambda in libiberty/cp-demangle.c. However, the C++ compiler does not add a lambda as a substitution in write_closure_type_name in cp/mangle.c. According to https://codesourcery.com/cxx-abi, the compiler is correct and the demangler is not. Here is a test case that shows the problem: template<typename F> struct A { typedef int X; }; template<typename F> inline typename A<F>::X F2(F f) { return 0; } void F() { F2([]{}); } This produces the symbol _Z2F2IZ1FvEUlvE_EN1AIT_E1XES2_, which is the type of F2 instantiated with a lambda. Currently the demangler demangles this as A<F()::{lambda()#1}>::X F2<F()::{lambda()#1}>(A) Note the final (A). That does not make sense. The argument type of F2 is not A, which doesn't even make sense by itself. The argument type is a lambda. Compare to the output of llvm-cxxfilt: A<F()::'lambda'()>::X F2<F()::'lambda'()>(F()::'lambda'()) Here the argument is correctly shown as a lambda. I can send a patch. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug demangler/96143] C++ demangler should not add a lambda as a substitution 2020-07-10 4:27 [Bug demangler/96143] New: C++ demangler should not add a lambda as a substitution ian at airs dot com @ 2020-07-10 12:41 ` nathan at gcc dot gnu.org 2020-07-14 17:27 ` cvs-commit at gcc dot gnu.org 2020-07-14 17:36 ` ian at airs dot com 2 siblings, 0 replies; 4+ messages in thread From: nathan at gcc dot gnu.org @ 2020-07-10 12:41 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96143 Nathan Sidwell <nathan at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2020-07-10 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #1 from Nathan Sidwell <nathan at gcc dot gnu.org> --- Thanks for the reminder. If you do indeed have a patch, you know what to do :) ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug demangler/96143] C++ demangler should not add a lambda as a substitution 2020-07-10 4:27 [Bug demangler/96143] New: C++ demangler should not add a lambda as a substitution ian at airs dot com 2020-07-10 12:41 ` [Bug demangler/96143] " nathan at gcc dot gnu.org @ 2020-07-14 17:27 ` cvs-commit at gcc dot gnu.org 2020-07-14 17:36 ` ian at airs dot com 2 siblings, 0 replies; 4+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2020-07-14 17:27 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96143 --- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Ian Lance Taylor <ian@gcc.gnu.org>: https://gcc.gnu.org/g:bae45b8be57b2a2c22bf45f3eeb1118c328ad028 commit r11-2093-gbae45b8be57b2a2c22bf45f3eeb1118c328ad028 Author: Ian Lance Taylor <iant@golang.org> Date: Fri Jul 10 09:34:28 2020 -0700 demangler: don't treat lambda as a substitution candidate libiberty/ChangeLog: PR demangler/96143 * cp-demangle.c (d_lambda): Don't add substitution candidate. * testsuite/demangle-expected: Update a few existing test cases accordingly, and add a new test case. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug demangler/96143] C++ demangler should not add a lambda as a substitution 2020-07-10 4:27 [Bug demangler/96143] New: C++ demangler should not add a lambda as a substitution ian at airs dot com 2020-07-10 12:41 ` [Bug demangler/96143] " nathan at gcc dot gnu.org 2020-07-14 17:27 ` cvs-commit at gcc dot gnu.org @ 2020-07-14 17:36 ` ian at airs dot com 2 siblings, 0 replies; 4+ messages in thread From: ian at airs dot com @ 2020-07-14 17:36 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96143 Ian Lance Taylor <ian at airs dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #3 from Ian Lance Taylor <ian at airs dot com> --- Fixed on trunk. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-07-14 17:36 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-07-10 4:27 [Bug demangler/96143] New: C++ demangler should not add a lambda as a substitution ian at airs dot com 2020-07-10 12:41 ` [Bug demangler/96143] " nathan at gcc dot gnu.org 2020-07-14 17:27 ` cvs-commit at gcc dot gnu.org 2020-07-14 17:36 ` ian at airs dot com
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).