[llvm] [X86] Use Register in X86InstrBuilder.h. NFC (PR #130514)

Phoebe Wang via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 9 23:28:53 PDT 2025


================
@@ -121,54 +114,58 @@ static inline X86AddressMode getAddressFromInstr(const MachineInstr *MI,
 /// with no scale, index or displacement. An example is: DWORD PTR [EAX].
 ///
 static inline const MachineInstrBuilder &
-addDirectMem(const MachineInstrBuilder &MIB, unsigned Reg) {
+addDirectMem(const MachineInstrBuilder &MIB, Register Reg) {
   // Because memory references are always represented with five
   // values, this adds: Reg, 1, NoReg, 0, NoReg to the instruction.
-  return MIB.addReg(Reg).addImm(1).addReg(0).addImm(0).addReg(0);
+  return MIB.addReg(Reg)
+      .addImm(1)
+      .addReg(Register())
+      .addImm(0)
+      .addReg(Register());
 }
 
 /// Replace the address used in the instruction with the direct memory
 /// reference.
 static inline void setDirectAddressInInstr(MachineInstr *MI, unsigned Operand,
-                                           unsigned Reg) {
+                                           Register Reg) {
   // Direct memory address is in a form of: Reg/FI, 1 (Scale), NoReg, 0, NoReg.
   MI->getOperand(Operand).ChangeToRegister(Reg, /*isDef=*/false);
   MI->getOperand(Operand + 1).setImm(1);
-  MI->getOperand(Operand + 2).setReg(0);
+  MI->getOperand(Operand + 2).setReg(Register());
----------------
phoebewang wrote:

That's only a personal feeling. We have used `0` as no register for a long time. `setReg(Register())` doesn't look intuitive to me.
In the future, if setReg only accepts Register, I'd like it has a default value, so that we can use `setReg()` for the purpose. Or define `constexpr Register NoRegister` and use `NoRegister` everywhere?

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


More information about the llvm-commits mailing list