Re: LDC 1.15.0-beta1
On 3/10/19 7:41 AM, kinke wrote: On Sunday, 10 March 2019 at 02:05:37 UTC, Manu wrote: Can you explain what this means: * Fix: functions annotated with `pragma(inline, true)` are implicitly cross-module-inlined again. `pragma(inline, true)` functions have only been inlined in the same compilation unit since LDC v1.1 (without explicit `-enable-cross-module-inlining`). Now they are inlined across compilation units again, as before v1.1 (and independent from the -O level). E.g., this means that you don't need LTO to get rid of calls to std.math trampolines for LLVM intrinsics such as: pragma(inline, true) real fabs(real x) @safe pure nothrow @nogc { return llvm_fabs(x); } THANK YOU! I did not know about this regression. I get about a 4.5% speed increase on my limited dataset with ldc-1.15-beta1 compared to ldc-1.14. Hopefully will be more on larger dataset (smaller set overwhelmed by startup costs).
Re: How is your DConf proposal looking?
On Friday, 8 March 2019 at 20:19:07 UTC, Stefan Koch wrote: I'll submit mine in a few hours. It's going to be about a hot topic :) This year I started working early on my proposal, but I only finished the final revision today. It's, huh, ambitious. Hopefully not too much, but there really wasn't any other way to slice it, IMO. I've been super busy since I moved abroad and started a new job, but I've been slowly cleaning up my past projects for public release, so I think 2019 and 2020 are going to be great years for me ;-)
Re: LDC 1.15.0-beta1
On Sunday, 10 March 2019 at 02:05:37 UTC, Manu wrote: Can you explain what this means: * Fix: functions annotated with `pragma(inline, true)` are implicitly cross-module-inlined again. `pragma(inline, true)` functions have only been inlined in the same compilation unit since LDC v1.1 (without explicit `-enable-cross-module-inlining`). Now they are inlined across compilation units again, as before v1.1 (and independent from the -O level). E.g., this means that you don't need LTO to get rid of calls to std.math trampolines for LLVM intrinsics such as: pragma(inline, true) real fabs(real x) @safe pure nothrow @nogc { return llvm_fabs(x); }