RSSA

Stephen Weeks MLton@sourcelight.com
Sun, 6 Jan 2002 18:11:27 -0800


I checked in my current work on the RSSA stuff under the "rssa" branch
so that you can have a look if you want.  Most of the changes are in
the backend directory.  Right now, it only type checks with the
c-codegen.  I haven't ported the changes to MACHINE_OUTPUT into the
x86-codegen, and I haven't compiled or tested anything with it yet.
I'm probably gonna debug using the c-codegen until I can pass all the
regressions and benchmarks.  Matthew, if you could try pushing the
changes into the x86-codegen, that would be great.

The best way to get an overview is to look at backend.fun, which now
works in the following way:

1. Translate the SSA program into RSSA, which involves deciding tuple,
   constructor, and array representations.
2. Insert limit checks (unimplemented).
3. Compute liveness.
4. Perform stack slot allocation (using a new algorithm based on
   liveness, which is more precise than the old dominator-based
   algorithm)
5. Translate to MACHINE, which mostly involves replacing Rssa operands
   with Machine operands and inserting liveness information.
6. Translate to MACHINE_OUTPUT, which does some cleanup, and maybe
   should be combined with the previous pass.