noinline, forceinline, builtin_expect
ZombineDev via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jan 2 10:34:10 PST 2015
DIP56[1] proposes to use pragmas to control inlining.
However, AFAIU, you can't override them on the caller-side and it
does not specify how it interacts with header (.di) files and
shared libraries (I guess like C/C++).
The proposal also mentions that these pragmas are not function
attributes because they should not affect the semantics of the
function. However I am not entirely sure that this is correct
because if use alloca, depending on if you inline or not, you can
get a stack overflow. There were two[2, 3] bug fixes in dmd
related to that.
[1]: http://wiki.dlang.org/DIP56
[2]: https://github.com/D-Programming-Language/dmd/pull/3811
[3]: https://github.com/D-Programming-Language/dmd/pull/3961 (fix
of the previous PR)
On Friday, 2 January 2015 at 14:34:39 UTC, Martin Nowak wrote:
> I'm currently working on optimizing the GC marking code and I'm
> having quite some problems with the inline decisions of the
> compiler.
> The compiler can't make good decisions here, because it lacks
> information about which branches are executed rarely.
> Would be nice to have @noinline, @forceinline and
> __builtin_expect.
More information about the Digitalmars-d
mailing list