On 5/12/2013 5:00 PM, Manu wrote:
So, here's an issue that constantly drives me nuts, and an elegant solution
seems so do-able.

It's a form of "data flow analysis". This is done by the optimizer, although it doesn't track ranges.

It isn't quite as simple as you suggest, there are issues like dealing with arbitrary control flow.

  x &= 0xFFFF;
  short s = x; // Error! (but we know x is 0 .. 65535)

Ok, but what about:

  x &= 0xFFFF;
  while (expr) {
      short s = x;
      x += 1;
  }

There's a forward reference going on. We cannot semantically evaluate s=x until we semantically evaluate the rest of the function in order to know that x is or is not reassigned.

Reply via email to