On Wednesday, 22 October 2014 at 20:32:39 UTC, Walter Bright wrote:
On 10/22/2014 2:31 AM, Shammah Chancellor wrote:
A couple of us working on SDC are trying to get ValueRange propigation implemented. I was wonder if someone could offer some insight as to how VRP works in DMD. If for example, trying to get the value range of a global, what
is the expected behavior?

It seems as though VRP is a language feature, and not a compiler feature -- since this allows some code to compile and not others. Is there a specification for how it should work somewhere? If not, it's hard to implement other compilers that will not generate errors in the same circumstances as DMD.


VRP is definitely a language feature, not a compiler feature. The specification is straightforward - a narrowing conversion can be implicitly performed if it can be proved that it would not lose information.

How it works, though, is kinda tricky, and the only guide to it is the compiler source code.

Seeing as it affects semantics, should there not be a minimum standard of what must be provable by a D compiler?

Inference is great, but portability matters too.

Reply via email to