]> git.ipfire.org Git - people/ms/gcc.git/commit
d: Fix undefined reference to lambda defined in private enum [PR109108]
authorIain Buclaw <ibuclaw@gdcproject.org>
Tue, 14 Mar 2023 12:16:11 +0000 (13:16 +0100)
committerIain Buclaw <ibuclaw@gdcproject.org>
Tue, 14 Mar 2023 19:11:30 +0000 (20:11 +0100)
commit0dcfd68b2a8369b647650bb68ff612cad3b33ac9
tree64b6f7d8419983721879fa70e9187152d5d9ca20
parent27e02e9fc388d7dc86ec10bedc6b8f13ec94725a
d: Fix undefined reference to lambda defined in private enum [PR109108]

Previously lambdas were connected to the module they were defined in.
Now they are emitted into every referencing compilation unit, and are
given one-only linkage.

PR d/109108

gcc/d/ChangeLog:

* decl.cc (function_defined_in_root_p): Remove.
(get_symbol_decl): Set DECL_LAMBDA_FUNCTION_P on function literals.
(start_function): Unconditionally unset DECL_EXTERNAL
(set_linkage_for_decl): Give lambda functions one-only linkage.

gcc/testsuite/ChangeLog:

* gdc.dg/torture/imports/pr109108.d: New test.
* gdc.dg/torture/pr109108.d: New test.

(cherry picked from commit 423d34f61c43e400f0d5b837fe93c83963b2ecdd)
gcc/d/decl.cc
gcc/testsuite/gdc.dg/torture/imports/pr109108.d [new file with mode: 0644]
gcc/testsuite/gdc.dg/torture/pr109108.d [new file with mode: 0644]