[llvm] [CodeGen] Introduce a VirtRegOrUnit class to hold virtual reg or physical reg unit. NFC (PR #123768)

Sergei Barannikov via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 23 00:01:08 PST 2025


================
@@ -160,6 +160,37 @@ template <> struct DenseMapInfo<Register> {
   }
 };
 
+/// Wrapper class representing a virtual register or register unit.
+class VirtRegOrUnit {
+  unsigned VRegOrUnit;
+
+public:
+  constexpr explicit VirtRegOrUnit(MCRegUnit Unit) : VRegOrUnit(Unit) {
+    assert(!Register::isVirtualRegister(VRegOrUnit));
+  }
+  constexpr explicit VirtRegOrUnit(Register Reg) : VRegOrUnit(Reg.id()) {
+    assert(Reg.isVirtual());
+  }
----------------
s-barannikov wrote:

(just an idea) Maybe it's worth deleting other constructors to prevent implicit conversions to MCRegUnit / Register?
```
template<typename T> VirtRegOrUnit(T) = delete;
```


https://github.com/llvm/llvm-project/pull/123768


More information about the llvm-commits mailing list