From 8be4d04455f70892a94d1e0798e266c948b4750a Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Fri, 14 Aug 2026 04:33:41 +0800 Subject: [CodeGen] Match LLVM Legalizer ownership --- backend/lib/CodeGen/MachineRegisterInfo.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'backend/lib/CodeGen/MachineRegisterInfo.cpp') diff --git a/backend/lib/CodeGen/MachineRegisterInfo.cpp b/backend/lib/CodeGen/MachineRegisterInfo.cpp index a88bfb0..4627f9e 100644 --- a/backend/lib/CodeGen/MachineRegisterInfo.cpp +++ b/backend/lib/CodeGen/MachineRegisterInfo.cpp @@ -311,6 +311,27 @@ const MachineOperand *MachineRegisterInfo::getUniqueVRegDef(Register Reg) const return UniqueDef; } +MachineInstr *MachineRegisterInfo::getVRegDef(Register Reg) noexcept { + const MachineOperand *Definition = getUniqueVRegDef(Reg); + return Definition == nullptr ? nullptr + : const_cast(Definition->parent()); +} + +const MachineInstr *MachineRegisterInfo::getVRegDef(Register Reg) const noexcept { + const MachineOperand *Definition = getUniqueVRegDef(Reg); + return Definition == nullptr ? nullptr : Definition->parent(); +} + +Expected MachineRegisterInfo::getType(Register Reg) const { + auto Info = virtualRegisterInfo(Reg); + if (!Info) + return std::unexpected(Info.error()); + if (!Info->get().Type) + return makeUnexpected(ErrorCode::InvalidArgument, + "virtual register has no LowLevelType"); + return *Info->get().Type; +} + Expected MachineRegisterInfo::replaceRegWith(Register OldReg, Register NewReg) { if (OldReg.isNoRegister() || NewReg.isNoRegister()) { return makeUnexpected(ErrorCode::InvalidArgument, -- cgit v1.2.3