On Thursday, 25 August 2016 at 18:15:47 UTC, Basile B. wrote:
The problem here that the example is bad with too agressive
optimizations because the CALLs are eliminated despite of no
inlining.
[...]
int use(const(Foo) foo)
{
return foo.foo() + foo.foo();
}
From my perspective, the problem with this example isn't missed
optimization potential. It's the code itself. Why waste
implementation efforts for such optimizations, if that would only
reward people writing such ugly code with an equal performance to
a more sane `2 * foo.foo()`? The latter is a) shorter, b) also
faster with optimizations turned off and c) IMO simply clearer.