]> 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 18:15:14 +0000 (19:15 +0100)
commit423d34f61c43e400f0d5b837fe93c83963b2ecdd
treec8d51cc66b2eee8494df5e6ca061c2fc17c583dc
parent1526ecd739fc6a13329abdcbdbf7c2df57c22177
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.
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]