On 06/24/2016 11:19 PM, Walter Bright wrote:
On 6/24/2016 6:42 PM, Andrei Alexandrescu wrote:
With your suggestion, this would also be an overflow:
long x = -1;
auto y = array.length + x;
I would be hard pressed to acknowledge that as an overflow that needs
to be
dynamically signaled. And the beauty of two's complement is that
indeed it just
works.
That's a seductive test case. But I worry that mixed signed/unsigned
arithmetic is not so simple.
What about:
x + array.length
commutativity in general
associativity
Does this become a morass of special cases?
Doesn't seem that way (with some simplifying rules, associativity is
left to right so not necessarily optimal), but commutativity works
nicely, please take a close look at
https://gist.github.com/andralex/a0c0ad32704e6ba66e458ac48add4a99 and
destroy what you find unfit. And indeed UBSAN is a good baseline to keep
an eye on. -- Andrei