c++: generic lambda, fn* conv, empty class [PR98326]
authorJason Merrill <jason@redhat.com>
Mon, 8 Feb 2021 22:04:03 +0000 (17:04 -0500)
committerJason Merrill <jason@redhat.com>
Tue, 9 Feb 2021 01:51:51 +0000 (20:51 -0500)
commitbdbca69e0720fa9062fe71782235141f629ae006
treeb5725094dbdc7b69cac93772cd65a2cfae07ea83
parenta8dd2b3e96590ceccead63d28fc91c956a5f1a73
c++: generic lambda, fn* conv, empty class [PR98326]

Here, in the thunk returned from the captureless lambda conversion to
pointer-to-function, we try to pass through invisible reference parameters
by reference, without doing a copy.  The empty class copy optimization was
messing that up.

gcc/cp/ChangeLog:

PR c++/98326
PR c++/20408
* cp-gimplify.c (simple_empty_class_p): Don't touch an invisiref
parm.

gcc/testsuite/ChangeLog:

PR c++/98326
* g++.dg/cpp1y/lambda-generic-empty1.C: New test.
gcc/cp/cp-gimplify.c
gcc/testsuite/g++.dg/cpp1y/lambda-generic-empty1.C [new file with mode: 0644]