[Stackmap] Materialize the jump address within the patchpoint noop slide.
authorJuergen Ributzka <juergen@apple.com>
Sat, 9 Nov 2013 01:51:33 +0000 (01:51 +0000)
committerJuergen Ributzka <juergen@apple.com>
Sat, 9 Nov 2013 01:51:33 +0000 (01:51 +0000)
commitd4f5a615674aaabeee4e444e708d1fa00a41495e
tree37ab0cacf3e60a5d6660d7f4b65e64609d29046c
parent999ffb6085a6e24261680b41d4f43ad4ba8fd250
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194306 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetLowering.h
lib/CodeGen/SelectionDAG/InstrEmitter.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h
lib/Target/X86/X86MCInstLower.cpp
test/CodeGen/X86/anyregcc.ll
test/CodeGen/X86/patchpoint.ll
test/CodeGen/X86/stackmap.ll