c++: mangling of lambdas in default args [PR91241]
authorJason Merrill <jason@redhat.com>
Tue, 6 Apr 2021 02:50:44 +0000 (22:50 -0400)
committerJason Merrill <jason@redhat.com>
Tue, 6 Apr 2021 04:12:57 +0000 (00:12 -0400)
commit55f40d968b0bd3be4478a9481e829a99ee0fa04f
tree659592b42ad51c77fbb9ac7f710f20e5f47be509
parent66de517b1c1dd22df7914f8e9a083cd5a73adbe2
c++: mangling of lambdas in default args [PR91241]

In this testcase, the parms remembered in LAMBDA_EXPR_EXTRA_SCOPE are no
longer the parms of the FUNCTION_DECL they have as their DECL_CONTEXT, so we
were mangling both lambdas as parm #0.  But since the parms are numbered
from right to left we don't need to need to find them in the FUNCTION_DECL,
we can measure their own DECL_CHAIN.

gcc/cp/ChangeLog:

PR c++/91241
* mangle.c (write_compact_number): Add sanity check.
(write_local_name): Use list_length for parm number.

gcc/testsuite/ChangeLog:

PR c++/91241
* g++.dg/abi/lambda-defarg1.C: New test.
gcc/cp/mangle.c
gcc/testsuite/g++.dg/abi/lambda-defarg1.C [new file with mode: 0644]