mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 15:17:25 +00:00
[Target/X86] Don't use callee-saved registers in a Win64 tail call on non-Windows.
Summary: A small bit that I missed when I updated the X86 backend to account for the Win64 calling convention on non-Windows. Now we don't use dead non-volatile registers when emitting a Win64 indirect tail call on non-Windows. Should fix PR23710. Test Plan: Added test for the correct behavior based on the case I posted to PR23710. Reviewers: rnk Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10258 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239111 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -175,12 +175,12 @@ X86RegisterInfo::getPointerRegClass(const MachineFunction &MF,
|
||||
return &X86::GR64_NOSPRegClass;
|
||||
return &X86::GR32_NOSPRegClass;
|
||||
case 2: // Available for tailcall (not callee-saved GPRs).
|
||||
if (IsWin64)
|
||||
const Function *F = MF.getFunction();
|
||||
if (IsWin64 || (F && F->getCallingConv() == CallingConv::X86_64_Win64))
|
||||
return &X86::GR64_TCW64RegClass;
|
||||
else if (Is64Bit)
|
||||
return &X86::GR64_TCRegClass;
|
||||
|
||||
const Function *F = MF.getFunction();
|
||||
bool hasHipeCC = (F ? F->getCallingConv() == CallingConv::HiPE : false);
|
||||
if (hasHipeCC)
|
||||
return &X86::GR32RegClass;
|
||||
|
||||
Reference in New Issue
Block a user