new SSA IL

Matthew Fluet
Tue, 7 Aug 2001 21:37:40 -0700 (PDT)

> It's interesting that you guys are reconsidering SSA.  I remember we
> had a discussion on this a while ago with Richard.  My recollection
> at the time was that we concluded there'd be little difference in
> the optimizations that would result.

I think some of the optimizations will be more naturally expressed.  For
example, I just added a new common block elimination pattern:

fun L_X () [...] = L_Z (global_Y)
==>  L_X () [...] = L_Y3
with L_Y3 () [...] = L_Z (global_Y)  added after L_3

I'm stuck with the fact that I can't just accumulate all the L_Y3's in a
global list and tack them onto the decs at the top of the CPS function.
Instead, I need to give each jump label a property consisting of the decs
to add after it's definition, and check that property when processing the
jump declaration.

Also, the rewrite step of the contification pass would be much simpler
with un-scoped, mutually recursive blocks.