limit check insertion

Henry Cejtin henry@sourcelight.com
Mon, 22 Oct 2001 17:17:33 -0500


I assume that the last defining case of V should have been
    V (l :: p, n) = V (p, n - m) if at(l) = Alloc(m)
                                 if at(l) = LimitCheck(m)
I.e.,  you  have to walk through the path, not just take the first element of
the path, and what you called `li' was just `l'.  (Is the  first  part  wrong
because all allocations and checks are at the start of a basic block?)

Isn't  it  incorrect  (needlessly  resrictive)  to  allow paths to start from
arbitrary positions?  I.e., if I have some code that does a limit  check  and
then  goes to another block which does some allocation, then I am safe, but I
would fail your requirements since the path which starts  at  the  allocation
would have a V which was negative.