Steve Fink wrote:

In tracking this down, I also noticed that imcc seems to assume that
you will do a saveall/restoreall pair around bsr calls.

I have now a partial fix for this committed. When imcc sees a bsr *and* knows the label (all is in one compilation unit) *and* when there is no saveall, then registers are preserved, due to an updated CFG.

This is compatible with P6Cs subroutines and allows for multiple bsr calls with register allocation.

One caveat: imcc doesn't know, that e.g. restoreall globbers registers. (The core.ops is lacking hints here)

s. also the docs/*.pod

leo

Reply via email to