[Issue 21299] [LINK] undefined reference to dmd.root.stringtable.StringValue!(Type).StringValue.lstring()
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Nov 16 00:10:10 UTC 2020
https://issues.dlang.org/show_bug.cgi?id=21299
--- Comment #11 from Dlang Bot <dlang-bot at dlang.rocks> ---
dlang/dmd pull request #11961 "merge stable" was merged into master:
- 92758ee0f100dd2b3bd72714e4db415e1bd876f3 by Iain Buclaw:
Fix Issue 21299: Undefined reference to
dmd.root.stringtable.StringValue!(Type).lstring()
In `templateInstanceSemantic`, there exists special handling of matching
template instances for the same template declaration to ensure that only
at most one instance gets codegen'd.
If the primary instance `inst` originated from a non-root module, the
`minst` field will be updated so it is now coming from a root module,
however all Dsymbol `inst.members` of the instance still have their
`_scope.minst` pointing at the original non-root module. We must now
propagate `minst` to all members so that forward referenced dependencies
that get instantiated will also be appended to the root module,
otherwise there will be undefined references at link-time.
This doesn't affect compilations where all modules are compiled
together, as every module is a root module in that situation. What this
primarily affects are cases where there is a mix of root and non-root
modules, and a template was first instantiated in a non-root context,
then later instantiated again in a root context.
- 32273e82ec9ba3f4022f03e7e12d5d4a384dc3ba by Iain Buclaw:
Fix Issue 21299: Undefined reference to
dmd.root.stringtable.StringValue!(Type).lstring()
Alternative patch where instead of proactively fixing up instance
members when a template gets changed to a root instance, rather
propagate the `minst` as and when we run semantic on the nested
templates that still have a non-root `minst` from its scope.
- 05cbd224e621a858927a1d6e2debbebbb8e246b2 by Iain Buclaw:
Revert "Fix Issue 21299: Undefined reference to
dmd.root.stringtable.StringValue!(Type).lstring()"
This reverts commit 32273e82ec9ba3f4022f03e7e12d5d4a384dc3ba.
- cf518229cf08aacee8d681b18b855f94ae8201a6 by Iain Buclaw:
Issue 21299: Add regression test for another undefined reference issue
https://github.com/dlang/dmd/pull/11961
--
More information about the Digitalmars-d-bugs
mailing list