mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-20 19:04:10 -04:00
[stackmaps] More extraction of common code [NFCI]
General cleanup before starting to work on the part I want to actually change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279586 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -35,7 +35,8 @@ static cl::opt<int> StackMapVersion(
|
||||
|
||||
const char *StackMaps::WSMP = "Stack Maps: ";
|
||||
|
||||
StackMapOpers::StackMapOpers(const MachineInstr *MI) {
|
||||
StackMapOpers::StackMapOpers(const MachineInstr *MI)
|
||||
: MI(MI) {
|
||||
assert(getVarIdx() <= MI->getNumOperands() &&
|
||||
"invalid stackmap definition");
|
||||
}
|
||||
@@ -43,8 +44,7 @@ StackMapOpers::StackMapOpers(const MachineInstr *MI) {
|
||||
PatchPointOpers::PatchPointOpers(const MachineInstr *MI)
|
||||
: MI(MI), HasDef(MI->getOperand(0).isReg() && MI->getOperand(0).isDef() &&
|
||||
!MI->getOperand(0).isImplicit()),
|
||||
IsAnyReg(MI->getOperand(getMetaIdx(CCPos)).getImm() ==
|
||||
CallingConv::AnyReg) {
|
||||
IsAnyReg(getCallingConv() == CallingConv::AnyReg) {
|
||||
#ifndef NDEBUG
|
||||
unsigned CheckStartIdx = 0, e = MI->getNumOperands();
|
||||
while (CheckStartIdx < e && MI->getOperand(CheckStartIdx).isReg() &&
|
||||
@@ -358,8 +358,7 @@ void StackMaps::recordPatchPoint(const MachineInstr &MI) {
|
||||
assert(MI.getOpcode() == TargetOpcode::PATCHPOINT && "expected patchpoint");
|
||||
|
||||
PatchPointOpers opers(&MI);
|
||||
const int64_t ID = opers.getMetaOper(PatchPointOpers::IDPos).getImm();
|
||||
|
||||
const int64_t ID = opers.getID();
|
||||
auto MOI = std::next(MI.operands_begin(), opers.getStackMapStartIdx());
|
||||
recordStackMapOpers(MI, ID, MOI, MI.operands_end(),
|
||||
opers.isAnyReg() && opers.hasDef());
|
||||
@@ -368,7 +367,7 @@ void StackMaps::recordPatchPoint(const MachineInstr &MI) {
|
||||
// verify anyregcc
|
||||
auto &Locations = CSInfos.back().Locations;
|
||||
if (opers.isAnyReg()) {
|
||||
unsigned NArgs = opers.getMetaOper(PatchPointOpers::NArgPos).getImm();
|
||||
unsigned NArgs = opers.getNumCallArgs();
|
||||
for (unsigned i = 0, e = (opers.hasDef() ? NArgs + 1 : NArgs); i != e; ++i)
|
||||
assert(Locations[i].Type == Location::Register &&
|
||||
"anyreg arg must be in reg.");
|
||||
|
||||
Reference in New Issue
Block a user