On Sunday, 10 July 2016 at 07:43:14 UTC, ketmar wrote:
we already has one optimization case speced -- NRVO. and it is BAD. adding another implementation detail to the spec will only worsen the situation, i believe.
We have other cases cases where optimization is expected but it is poorly speced. However I like the fact that the spec does demand some optimizations because it ensures the quality of a conforming implementation.
Yet, TCO in particular it not applicable directly in many cases, and usually needs many transformations before it can be applied.
There nothing wrong with guaranteeing that it will be applied in trivial cases. (This should be done by adding a sentence to the spec, not by adding a pargma) However for more complex cases it heavily depends on the optimizer and on the backend!
In general you don't want to relay in such optimizations. When in doubt avoid recursion.