4 ms·
In the basic block with arguments variation there is no going in and out of SSA.
by ebiederm 11mo ago
In the basic block with arguments variation there is no going in and out of SSA.
- Findecanor 11mo agoPhi-functions and block arguments are just different views of the same thing. Sometimes it is more convenient to use one or the other when thinking of a problem. If you lay out phi-functions and their parameters on a grid, you'd get a "phi-matrix" where phi-functions are rows and block arguments are the columns. If you don't do an out-of-SSA transform before register allocation, and effectively treat block parameters like function calls then you're pushing the complexity to the register allocator. An out-of-SSA transform before register allocation would coalesce not just registers but also variables in spill slots (thus avoiding memory-memory moves), it would reduce the complexity of parallel moves. A more advanced transform could also hoist moves out from before the hottest branch which could potentially lead to un-splitting previously split critical edges.