Andy Wingo <wi...@pobox.com> writes: >> Now when we are tail-calling in rtl, we just fill the argument slots >> with the new function arguments directly and then tail-call by filling >> in >> number of arguments and function. This is very smart and just some >> simple features added would mean that a lot of translation >> from one memory location to the other is skipped. I really like how the >> rtl code handle this but there is an expense. It complicates life a >> little >> when we overwrite arguments that are used in the calculation of other >> arguments. I'm working on how to handle this but I just wanted to point >> out how nice this design choice is. > > Thanks! In general at the end you have a parallel register move (or > parallel assignment), which has a number of standard solutions out > there. >
This is quite a natural first step. But especially for loops there is a similar tail pattern that probably needs to be optimized better w.r.t. register slots when we compile nativly /Stefan