On Tuesday, 27 October 2015 at 19:30:08 UTC, Timon Gehr wrote:
On 10/27/2015 06:35 PM, Steven Schveighoffer wrote:
I understand how the compiler treats it. In some cases, the statement is reachable, the compiler is unhelpfully pointing out cases where it
was unreachable.

The reachable statement is not the same as the statement that is flagged unreachable. This is not an implementation detail and it is not 'incorrect'. It might be changed if the consensus is that it is unhelpful. Personally, I usually avoid generating dead code.

I don't think any dead code is being generated, in the cases where the compiler knows enough to issue the "statement is not reachable" warning. My testing indicates that when the compiler decides code is unreachable, it just removes it.

(I found this out because of a bug in the compiler:
http://forum.dlang.org/thread/[email protected])

Any fix for issue 14835 should still allow the compiler to detect and remove dead code in template instantiations - but in cases where the code could be reached with a different set of template parameters, it should be removed silently, without the warning.

This would make it consistent with the behaviour of inlining, as Steven Schveighoffer pointed out.

Reply via email to