call @PLT Performance

Johan Engelen j at j.nl
Wed Jan 16 14:19:27 UTC 2019


On Wednesday, 16 January 2019 at 13:03:59 UTC, SrMordred wrote:
> Compiler noob here:
>
> auto a = popcnt(bitset);
> auto b = bsf(bitset);
>
> generate this:
>
> call    pure nothrow @nogc @safe int core.bitop.popcnt(uint)@PLT
> call    pure nothrow @nogc @safe int core.bitop.bsf(uint)@PLT
>
> Why not generate the bsf/popcnt instruction?
>
> Aren't this call's slower?

Yeah this is a known issue: LDC does not cross-module inline. You 
can enable that by passing the "-enable-cross-module-inlining" 
compile flag.
It's a long standing issue, but became a little less urgent 
because of LTO (`-flto=...`).

-Johan



More information about the digitalmars-d-ldc mailing list