diff options
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/CodeGen/StackMaps.h | 6 | ||||
-rw-r--r-- | include/llvm/IR/CallingConv.h | 4 | ||||
-rw-r--r-- | include/llvm/Target/Target.td | 4 |
3 files changed, 10 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/StackMaps.h b/include/llvm/CodeGen/StackMaps.h index 40eeb2e6d0..c79c3428b6 100644 --- a/include/llvm/CodeGen/StackMaps.h +++ b/include/llvm/CodeGen/StackMaps.h @@ -50,10 +50,12 @@ public: /// This should be called by the MC lowering code _immediately_ before /// lowering the MI to an MCInst. It records where the operands for the /// instruction are stored, and outputs a label to record the offset of - /// the call from the start of the text section. + /// the call from the start of the text section. In special cases (e.g. AnyReg + /// calling convention) the return register is also recorded if requested. void recordStackMap(const MachineInstr &MI, uint32_t ID, MachineInstr::const_mop_iterator MOI, - MachineInstr::const_mop_iterator MOE); + MachineInstr::const_mop_iterator MOE, + bool recordResult = false); /// If there is any stack map data, create a stack map section and serialize /// the map info into it. This clears the stack map data structures diff --git a/include/llvm/IR/CallingConv.h b/include/llvm/IR/CallingConv.h index 35c7df9b2a..4437af2557 100644 --- a/include/llvm/IR/CallingConv.h +++ b/include/llvm/IR/CallingConv.h @@ -54,6 +54,10 @@ namespace CallingConv { // WebKit JS - Calling convention for stack based JavaScript calls WebKit_JS = 12, + // AnyReg - Calling convention for dynamic register based calls (e.g. + // stackmap and patchpoint intrinsics). + AnyReg = 13, + // Target - This is the start of the target-specific calling conventions, // e.g. fastcall and thiscall on X86. FirstTargetCC = 64, diff --git a/include/llvm/Target/Target.td b/include/llvm/Target/Target.td index 0c0b1edfe9..3f6eae6bb2 100644 --- a/include/llvm/Target/Target.td +++ b/include/llvm/Target/Target.td @@ -807,9 +807,9 @@ def STACKMAP : Instruction { let mayLoad = 1; } def PATCHPOINT : Instruction { - let OutOperandList = (outs); + let OutOperandList = (outs unknown:$dst); let InOperandList = (ins i32imm:$id, i32imm:$nbytes, unknown:$callee, - i32imm:$nargs, variable_ops); + i32imm:$nargs, i32imm:$cc, variable_ops); let isCall = 1; let mayLoad = 1; } |