Fix PPC64 CR spill location for callee-saved registers
authorHal Finkel <hfinkel@anl.gov>
Mon, 15 Apr 2013 02:07:05 +0000 (02:07 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 15 Apr 2013 02:07:05 +0000 (02:07 +0000)
commit6736988ae23241b7056aec21164c0734f6ec362a
tree3f301084a85dfb48ee4206462fb9ad606659f101
parent1f140317e39f2a100c6271ee8fd89e5146dd9d14
Fix PPC64 CR spill location for callee-saved registers

This fixes an ABI bug for non-Darwin PPC64. For the callee-saved condition
registers, the spill location is specified relative to the stack pointer (SP +
8). However, this is not relative to the SP after the new stack frame is
established, but instead relative to the caller's stack pointer (it is stored
into the linkage area of the parent's stack frame).

So, like with the link register, we don't directly spill the CRs with other
callee-saved registers, but just mark them to be spilled during prologue
generation.

In practice, this reverts r179457 for PPC64 (but leaves it in place for PPC32).

llvm-svn: 179500
llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h
llvm/test/CodeGen/PowerPC/crsave.ll