Skip to content

Commit d8a5097

Browse files
author
Francis Visoiu Mistrih
committed
[RISCV] Mark all registers marked isConstant as reserved
This makes use of the information from TableGen instead of duplicating it in the code.
1 parent 773ee62 commit d8a5097

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,16 @@ BitVector RISCVRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
104104
BitVector Reserved(getNumRegs());
105105
auto &Subtarget = MF.getSubtarget<RISCVSubtarget>();
106106

107-
// Mark any registers requested to be reserved as such
108107
for (size_t Reg = 0; Reg < getNumRegs(); Reg++) {
108+
// Mark any registers requested to be reserved as such
109109
if (Subtarget.isRegisterReservedByUser(Reg))
110110
markSuperRegs(Reserved, Reg);
111+
// Mark all the registers defined as constant in TableGen as reserved.
112+
if (isConstantPhysReg(Reg))
113+
markSuperRegs(Reserved, Reg);
111114
}
112115

113116
// Use markSuperRegs to ensure any register aliases are also reserved
114-
markSuperRegs(Reserved, RISCV::X0); // zero
115117
markSuperRegs(Reserved, RISCV::X2); // sp
116118
markSuperRegs(Reserved, RISCV::X3); // gp
117119
markSuperRegs(Reserved, RISCV::X4); // tp
@@ -136,7 +138,6 @@ BitVector RISCVRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
136138
markSuperRegs(Reserved, RISCV::VTYPE);
137139
markSuperRegs(Reserved, RISCV::VXSAT);
138140
markSuperRegs(Reserved, RISCV::VXRM);
139-
markSuperRegs(Reserved, RISCV::VLENB); // vlenb (constant)
140141

141142
// Floating point environment registers.
142143
markSuperRegs(Reserved, RISCV::FRM);

0 commit comments

Comments
 (0)