[Issue 17072] [REG 2.073.0-b1] missing symbols with -inline

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sun Jan 15 09:58:10 PST 2017


https://issues.dlang.org/show_bug.cgi?id=17072

Martin Nowak <code at dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla at digitalmars.com,
                   |                            |code at dawg.eu

--- Comment #1 from Martin Nowak <code at dawg.eu> ---
There is a difference between the mangling of the symbol included in
phobos64.lib and the one requested.

phobos64.lib has:
_D4core4time8Duration46__T10opOpAssignVAyaa1_2dTS4core4time8DurationZ10opOpAssignMFNaNbNcNiNjNfxS4core4time8DurationZS4core4time8Duration
linker wants:
_D4core4time8Duration46__T10opOpAssignVAyaa1_2dTS4core4time8DurationZ10opOpAssignMFNaNbNcNiNfxS4core4time8DurationZS4core4time8Duration

ddemangle doesn't yet know Nj, it stands for FuncAttrReturn
(https://dlang.org/spec/abi.html#FuncAttrReturn).

So what we have here is likely a difference in return inference in different
compilations, leading the test below to think that the template was already
instantiated by druntime, therefor not emitting it itself, but the
instantiation in druntime inferred a different STCreturn.

It's only reproducible w/ -inline b/c that runs semantic3 on imported functions
and templates.

Happens because the released library is build with -dip25 which enables return
inference and obviously creates ABI incompatibilities.

--


More information about the Digitalmars-d-bugs mailing list