aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/CodeGen/StackMaps.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/llvm/lib/CodeGen/StackMaps.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/CodeGen/StackMaps.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/contrib/llvm-project/llvm/lib/CodeGen/StackMaps.cpp b/contrib/llvm-project/llvm/lib/CodeGen/StackMaps.cpp
index ccaff862fa3f..bb7a51e49edb 100644
--- a/contrib/llvm-project/llvm/lib/CodeGen/StackMaps.cpp
+++ b/contrib/llvm-project/llvm/lib/CodeGen/StackMaps.cpp
@@ -146,6 +146,23 @@ unsigned StatepointOpers::getGCPointerMap(
return GCMapSize;
}
+bool StatepointOpers::isFoldableReg(Register Reg) const {
+ unsigned FoldableAreaStart = getVarIdx();
+ for (const MachineOperand &MO : MI->uses()) {
+ if (MI->getOperandNo(&MO) >= FoldableAreaStart)
+ break;
+ if (MO.isReg() && MO.getReg() == Reg)
+ return false;
+ }
+ return true;
+}
+
+bool StatepointOpers::isFoldableReg(const MachineInstr *MI, Register Reg) {
+ if (MI->getOpcode() != TargetOpcode::STATEPOINT)
+ return false;
+ return StatepointOpers(MI).isFoldableReg(Reg);
+}
+
StackMaps::StackMaps(AsmPrinter &AP) : AP(AP) {
if (StackMapVersion != 3)
llvm_unreachable("Unsupported stackmap version!");
@@ -240,7 +257,7 @@ StackMaps::parseOperand(MachineInstr::const_mop_iterator MOI,
return ++MOI;
}
- assert(Register::isPhysicalRegister(MOI->getReg()) &&
+ assert(MOI->getReg().isPhysical() &&
"Virtreg operands should have been rewritten before now.");
const TargetRegisterClass *RC = TRI->getMinimalPhysRegClass(MOI->getReg());
assert(!MOI->getSubReg() && "Physical subreg still around.");
@@ -688,7 +705,7 @@ void StackMaps::emitCallsiteEntries(MCStreamer &OS) {
}
// Emit alignment to 8 byte.
- OS.emitValueToAlignment(8);
+ OS.emitValueToAlignment(Align(8));
// Num live-out registers and padding to align to 4 byte.
OS.emitInt16(0);
@@ -700,7 +717,7 @@ void StackMaps::emitCallsiteEntries(MCStreamer &OS) {
OS.emitIntValue(LO.Size, 1);
}
// Emit alignment to 8 byte.
- OS.emitValueToAlignment(8);
+ OS.emitValueToAlignment(Align(8));
}
}