rvalues -> ref (yup... again!)
Rubn
where at is.this
Wed Mar 28 03:07:22 UTC 2018
On Wednesday, 28 March 2018 at 00:56:29 UTC, kinke wrote:
> On Tuesday, 27 March 2018 at 23:59:09 UTC, Rubn wrote:
>> Just adding a few writeln it isn't able to remove the function
>> entirely anymore and can't optimize it out.
>
> Well writeln() here involves number -> string formatting, GC,
> I/O, template bloat... There are indeed superfluous memcpy's in
> your foo() there (although the forward and bar calls are still
> inlined), which after a quick glance seem to be LLVM optimizer
> shortcomings, the IR emitted by LDC looks fine.
> For an abitrary external function, it's all fine as it should
> be, boiling down to a single memcpy in foo() and a direct
> memset in main(): https://run.dlang.io/is/O1aeLK
Well somethings wrong if writeln causes optimization to not
occur, if that is the case then it'd be best to just use printf()
instead. Anyways using small examples to show optimization is
usually not what's going to happen in actual code. Functions are
rarely that simple, and if adding a single writeln() to a call is
enough to eliminate that optimization, I can only imagine what
other little things do as well.
More information about the Digitalmars-d
mailing list