diff options
| author | Juergen Ributzka <juergen@apple.com> | 2013-11-09 01:51:33 +0000 |
|---|---|---|
| committer | Juergen Ributzka <juergen@apple.com> | 2013-11-09 01:51:33 +0000 |
| commit | 87ed906b2edf33554e74f8182c26109e4e681b63 (patch) | |
| tree | b8d06709e89c97cd111468677216f89f8bbc5174 /llvm/lib/Target/X86/X86ISelLowering.cpp | |
| parent | 00a15d94285b261bdd4e4727d52d76d4aee7b05d (diff) | |
| download | bcm5719-llvm-87ed906b2edf33554e74f8182c26109e4e681b63.tar.gz bcm5719-llvm-87ed906b2edf33554e74f8182c26109e4e681b63.zip | |
[Stackmap] Materialize the jump address within the patchpoint noop slide.
This patch moves the jump address materialization inside the noop slide. This
enables patching of the materialization itself or its complete removal. This
patch also adds the ability to define scratch registers that can be used safely
by the code called from the patchpoint intrinsic. At least one scratch register
is required, because that one is used for the materialization of the jump
address. This patch depends on D2009.
Differential Revision: http://llvm-reviews.chandlerc.com/D2074
Reviewed by Andy
llvm-svn: 194306
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 55bfab449a3..a8743afce9a 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -1773,6 +1773,11 @@ X86TargetLowering::CanLowerReturn(CallingConv::ID CallConv, return CCInfo.CheckReturn(Outs, RetCC_X86); } +const uint16_t *X86TargetLowering::getScratchRegisters(CallingConv::ID) const { + static const uint16_t ScratchRegs[] = { X86::R11, 0 }; + return ScratchRegs; +} + SDValue X86TargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, |

