Don't spill PPC VRSAVE on non-Darwin (even in SjLj)

As Bill Schmidt pointed out to me, only on Darwin do we need to spill/restore
VRSAVE in the SjLj code. For non-Darwin, don't spill/restore VRSAVE (and I've
added some asserts to make sure that we're not).

As it turns out, we're not currently handling the Darwin case correctly (I've
added a FIXME in the test case). I've tried adding various implied register
definitions/uses to force the spill without success, so I'll need to address
this later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178096 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Hal Finkel
2013-03-27 00:02:20 +00:00
parent ca442a4a1a
commit b7e11e400d
5 changed files with 18 additions and 6 deletions

View File

@@ -114,6 +114,8 @@ PPCRegisterInfo::getNoPreservedMask() const {
if (!Subtarget.hasAltivec())
return CSR_NoRegs_Altivec_RegMask;
if (Subtarget.isDarwin())
return CSR_NoRegs_Darwin_RegMask;
return CSR_NoRegs_RegMask;
}