PPC NCG: Use liveness information in CmmCall
authorPeter Trommler <ptrommler@acm.org>
Tue, 11 Dec 2018 15:43:49 +0000 (16:43 +0100)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Fri, 15 Mar 2019 14:30:08 +0000 (10:30 -0400)
commit83e09d3c2b2e84b85fa25e271eff2747fc783f09
treef7969d07d5a1cccd58893fd47aa133b0c7464211
parent97032ed9b2594c8939cab776ff871051d6dba30a
PPC NCG: Use liveness information in CmmCall

We make liveness information for global registers
available on `JMP` and `BCTR`, which were the last instructions
missing. With complete liveness information we do not need to
reserve global registers in `freeReg` anymore. Moreover we
assign R9 and R10 to callee saves registers.

Cleanup by removing `Reg_Su`, which was unused, from `freeReg`
and removing unused register definitions.

The calculation of the number of floating point registers is too
conservative. Just follow X86 and specify the constants directly.

Overall on PowerPC this results in 0.3 % smaller code size in nofib
while runtime is slightly better in some tests.
compiler/nativeGen/PPC/CodeGen.hs
compiler/nativeGen/PPC/Instr.hs
compiler/nativeGen/PPC/Ppr.hs
compiler/nativeGen/PPC/Regs.hs
includes/CodeGen.Platform.hs
includes/stg/MachRegs.h