aboutsummaryrefslogtreecommitdiff
path: root/backend/include/rcc/CodeGen/MachineRegisterInfo.h
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-01 13:24:09 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-01 13:24:09 +0800
commit19d8e4f562a8583b002dbaa837ec0083e7768a4f (patch)
treed8525d05d65c69c81076b8cdafdf0bfd400d4053 /backend/include/rcc/CodeGen/MachineRegisterInfo.h
parent8553df97bbc6154dae9d0ad861857e71a0efa420 (diff)
downloadrcc-project-19d8e4f562a8583b002dbaa837ec0083e7768a4f.tar.gz
rcc-project-19d8e4f562a8583b002dbaa837ec0083e7768a4f.tar.xz
[CodeGen] Add strict MachineIR verification
Verify arena catalogs, intrusive layouts, reciprocal CFG edges, operand ownership, exact def-use coverage, instruction descriptors, pseudo deadlines, and MachineFunctionProperties. Preserve monotonic-arena history while rejecting detached objects that retain live state.
Diffstat (limited to 'backend/include/rcc/CodeGen/MachineRegisterInfo.h')
-rw-r--r--backend/include/rcc/CodeGen/MachineRegisterInfo.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/backend/include/rcc/CodeGen/MachineRegisterInfo.h b/backend/include/rcc/CodeGen/MachineRegisterInfo.h
index 495853a..da0f530 100644
--- a/backend/include/rcc/CodeGen/MachineRegisterInfo.h
+++ b/backend/include/rcc/CodeGen/MachineRegisterInfo.h
@@ -108,6 +108,9 @@ public:
[[nodiscard]] Expected<void> eraseVirtualRegister(Register Reg);
[[nodiscard]] bool isKnownVirtualRegister(Register Reg) const noexcept;
+ [[nodiscard]] std::span<const VirtualRegisterInfo> virtualRegisters() const noexcept {
+ return VirtualRegisters;
+ }
[[nodiscard]] Expected<std::reference_wrapper<VirtualRegisterInfo>>
virtualRegisterInfo(Register Reg);
[[nodiscard]] Expected<std::reference_wrapper<const VirtualRegisterInfo>>
@@ -146,6 +149,7 @@ public:
[[nodiscard]] Expected<std::size_t> replaceRegWith(Register OldReg, Register NewReg);
[[nodiscard]] Expected<void> verifyDefUseChains() const;
+ [[nodiscard]] bool isLinkedOperand(const MachineOperand &Operand) const noexcept;
private:
struct RegOperandListHead final {