#include "mir/MIR.h" #include #include "utils/Log.h" namespace mir { namespace { bool IsAllowedReg(PhysReg reg) { switch (reg) { case PhysReg::W0: case PhysReg::W8: case PhysReg::W9: case PhysReg::X29: case PhysReg::X30: case PhysReg::SP: return true; } return false; } } // namespace void RunRegAlloc(MachineFunction& function) { for (const auto& inst : function.entry().instructions()) { for (const auto& operand : inst.operands()) { if (operand.kind() == Operand::Kind::Reg && !IsAllowedReg(operand.reg())) { throw std::runtime_error(FormatError("mir", "寄存器分配失败")); } } } } } // namespace mir