On Thursday, 9 August 2018 at 10:47:37 UTC, Stefan Koch wrote:
Regarding the rationale:
It should be pointed out that this is a further complication of
the type-system (which is already more complex than what c++
has).
That does impact generic code.
My own experience with generic code has show that it is very
hard (practically impossible) to write correct code,
(correct meaning here working as intended, when instantiation
succeeds) even when using template constraints.
Indeed.
There is no explanation of when the additional optimizations
would be actually relevant,
Usually functions that don't return abort the program anyway.
I presume Walter is talking about considering all branches that
don't return to be cold and "outlining" them as much as possible
so as to not pollute icache, which he already implemented. So I
assume he's talking about propagating that information?
There not even an example piece of code where the newly enabled
optimizations would make an impact.
The point about other system languages having this feature is
actually the most substantiated one :)
It was about that is was required to be competitive which I find
to be a bizarre claim. But we already have this in LDC, GDC
probably has something similar (whatever corresponds to
__attribute__(noreturn)),and if you care about perf you are not
using DMD.