forked from OSchip/llvm-project
[Stackmaps] Fix the ID type to be i64 also for stackmaps (as we claim in the documenation)
The ID type for the stackmap and patchpoint intrinsics are in both cases i64. This fixes an zero extend in the SelectionDAGBuilder that still used i32. This also updates the target independent instructions STACKMAP and PATCHPOINT to use the correct type. llvm-svn: 201262
This commit is contained in:
parent
7f04511267
commit
aa30da30bb
|
@ -814,14 +814,14 @@ def LIFETIME_END : Instruction {
|
||||||
}
|
}
|
||||||
def STACKMAP : Instruction {
|
def STACKMAP : Instruction {
|
||||||
let OutOperandList = (outs);
|
let OutOperandList = (outs);
|
||||||
let InOperandList = (ins i32imm:$id, i32imm:$nbytes, variable_ops);
|
let InOperandList = (ins i64imm:$id, i32imm:$nbytes, variable_ops);
|
||||||
let isCall = 1;
|
let isCall = 1;
|
||||||
let mayLoad = 1;
|
let mayLoad = 1;
|
||||||
let usesCustomInserter = 1;
|
let usesCustomInserter = 1;
|
||||||
}
|
}
|
||||||
def PATCHPOINT : Instruction {
|
def PATCHPOINT : Instruction {
|
||||||
let OutOperandList = (outs unknown:$dst);
|
let OutOperandList = (outs unknown:$dst);
|
||||||
let InOperandList = (ins i32imm:$id, i32imm:$nbytes, unknown:$callee,
|
let InOperandList = (ins i64imm:$id, i32imm:$nbytes, unknown:$callee,
|
||||||
i32imm:$nargs, i32imm:$cc, variable_ops);
|
i32imm:$nargs, i32imm:$cc, variable_ops);
|
||||||
let isCall = 1;
|
let isCall = 1;
|
||||||
let mayLoad = 1;
|
let mayLoad = 1;
|
||||||
|
|
|
@ -6917,12 +6917,13 @@ void SelectionDAGBuilder::visitStackmap(const CallInst &CI) {
|
||||||
// Replace the target specific call node with the stackmap intrinsic.
|
// Replace the target specific call node with the stackmap intrinsic.
|
||||||
SmallVector<SDValue, 8> Ops;
|
SmallVector<SDValue, 8> Ops;
|
||||||
|
|
||||||
// Add the <id> and <numShadowBytes> constants.
|
// Add the <id> and <numBytes> constants.
|
||||||
for (unsigned i = 0; i < 2; ++i) {
|
SDValue IDVal = getValue(CI.getOperand(PatchPointOpers::IDPos));
|
||||||
SDValue tmp = getValue(CI.getOperand(i));
|
Ops.push_back(DAG.getTargetConstant(
|
||||||
Ops.push_back(DAG.getTargetConstant(
|
cast<ConstantSDNode>(IDVal)->getZExtValue(), MVT::i64));
|
||||||
cast<ConstantSDNode>(tmp)->getZExtValue(), MVT::i32));
|
SDValue NBytesVal = getValue(CI.getOperand(PatchPointOpers::NBytesPos));
|
||||||
}
|
Ops.push_back(DAG.getTargetConstant(
|
||||||
|
cast<ConstantSDNode>(NBytesVal)->getZExtValue(), MVT::i32));
|
||||||
// Push live variables for the stack map.
|
// Push live variables for the stack map.
|
||||||
addStackMapLiveVars(CI, 2, Ops, *this);
|
addStackMapLiveVars(CI, 2, Ops, *this);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue