Okay, I just added a big chunk of code to imcc. The code does two main things:
- changes imcc syntax to disallow newlines within ops. You can still have all the newlines you want between ops and after labels, but this: if $P1 goto label will no longer work. Since no one appeared to be emitting imcc code like this, it shouldn't be missed. - Makes some significant changes to register allocation and spilling. For the details, you'll have to ask Leo. The upshot is that none of the tests behave worse, and some behave better. If anyone besides languages/{cola,perl6} is using imcc, please let me know. /s