[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