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.