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

Reply via email to