| |
| Posted by user1234 in reply to realhet | PermalinkReply |
|
user1234
Posted in reply to realhet
| On Saturday, 28 September 2024 at 12:20:43 UTC, realhet wrote:
> Hi,
I have some statements in my mind about --allinst, but I'm not sure they are correct or not.
-
Normally the compiler analyzes the full code with all the modules, and it only compiles code for template things that are used in the given code.
-
It is not needed for compiling the code with a single compiler instance, but is required for projects that are compiled in parallel by using multiple compiler instances.
Please someone tell me that these statements are valid or I know this wrong. (These are just my speculations, feelings, I didn't find documentation on this.)
Speaking of speculation... "-allinst" disable an internal system of speculation that is: "this instance is already emitted so dont do it again".
Over the years it has appeared that the speculation does not always work as it should.
The classic symptom of that is when people encounter linker errors related to missing symbols. "-allinst" is the number one workaround. When activated, it's likely that things get emitted more than once, but at least, speculation bugs are gone.
You may ask "but then there should be other linker errors about double definition ?". No, those syms has to be emitted as "weak" symbols, so the linker ignore duplicated definitions.
|