|
|
|
|
|
by DannyBee
3757 days ago
|
|
Most of LLVM's backend is SSA, actually.
At some point it lowers out of SSA, but you have to do that at some point anyway. It happens that LLVM does instruction selection and scheduling on SSA but not regalloc (it does phi elimination before regalloc, though uses ssa based liveness info in regalloc) My take: Who cares? If someone wants to make register allocation SSA based, and demonstrates code or speed or maintenance or whatever benefits, great. There are theoretical benefits, but in practice, LLVM does pretty well with it's current scheme. Because of this, it's not really near the top of any todo list, nor should it be. |
|
libfirm never goes out of SSA (since it uses a graph-based representation it's simply impossible: the data dependency edges need one target). It converts the programm to CSSA and assigns the same register to all phi operands. When finally emitting the program, phi nodes emit nothing.