"root" of ChunkPerFunc chunk
Henry Cejtin
henry@sourcelight.com
Wed, 1 Nov 2000 17:42:35 -0600
I'm confused about how the results of the add could be used in the handler.
Assuming everything is in A-normal form, the result of the add is going into
a new (val) binding, so nothing can be closed over it. (If it weren't in A-
normal form then you could do something like
x := y + z
and it could make the contents of the ref x be the destination.)
As to the block linearization, what I used long ago in something else was to
just start at an arbitrary place and every time I come to an unconditional
jump, if the target hasn't already been done, do it now (dropping the jump).
Thus the only unconditional jumps are backwards.
I completely agree that this far in the back end isn't the right place to
replace checking-arithmetic with unchecking versions. It is important though
that the unchecking versions are available (for earlier passes to use).
Note, you talked about simplifying multiplies by -1, but these can still
overflow.
Did you do any runs to see how much the checking is costing?