Skip to content

Commit 06048aa

Browse files
authored
[Target] Use 'unsigned' as the underlying type for the tablegened physical register enums. (#109086)
Otherwise, the enum defaults to 'int'. Update a few places that used 'int' for registers that now need to change to avoid a signed/unsigned compare warning. I was hoping this would allow us to remove the 'int' comparison operators in Register.h and MCRegister.h, but compares with literal 0 still need them.
1 parent 0545e9f commit 06048aa

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1589,7 +1589,7 @@ void ARMExpandPseudo::CMSESaveClearFPRegsV81(MachineBasicBlock &MBB,
15891589
BuildMI(MBB, MBBI, DL, TII->get(ARM::VSTMSDB_UPD), ARM::SP)
15901590
.addReg(ARM::SP)
15911591
.add(predOps(ARMCC::AL));
1592-
for (int Reg = ARM::S16; Reg <= ARM::S31; ++Reg)
1592+
for (unsigned Reg = ARM::S16; Reg <= ARM::S31; ++Reg)
15931593
VPUSH.addReg(Reg);
15941594

15951595
// Clear FP registers with a VSCCLRM.
@@ -1794,7 +1794,7 @@ void ARMExpandPseudo::CMSERestoreFPRegsV81(
17941794
BuildMI(MBB, MBBI, DL, TII->get(ARM::VLDMSIA_UPD), ARM::SP)
17951795
.addReg(ARM::SP)
17961796
.add(predOps(ARMCC::AL));
1797-
for (int Reg = ARM::S16; Reg <= ARM::S31; ++Reg)
1797+
for (unsigned Reg = ARM::S16; Reg <= ARM::S31; ++Reg)
17981798
VPOP.addReg(Reg, RegState::Define);
17991799
}
18001800
}
@@ -2044,13 +2044,14 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBlock &MBB,
20442044

20452045
static void CMSEPushCalleeSaves(const TargetInstrInfo &TII,
20462046
MachineBasicBlock &MBB,
2047-
MachineBasicBlock::iterator MBBI, int JumpReg,
2048-
const LivePhysRegs &LiveRegs, bool Thumb1Only) {
2047+
MachineBasicBlock::iterator MBBI,
2048+
Register JumpReg, const LivePhysRegs &LiveRegs,
2049+
bool Thumb1Only) {
20492050
const DebugLoc &DL = MBBI->getDebugLoc();
20502051
if (Thumb1Only) { // push Lo and Hi regs separately
20512052
MachineInstrBuilder PushMIB =
20522053
BuildMI(MBB, MBBI, DL, TII.get(ARM::tPUSH)).add(predOps(ARMCC::AL));
2053-
for (int Reg = ARM::R4; Reg < ARM::R8; ++Reg) {
2054+
for (unsigned Reg = ARM::R4; Reg < ARM::R8; ++Reg) {
20542055
PushMIB.addReg(
20552056
Reg, Reg == JumpReg || LiveRegs.contains(Reg) ? 0 : RegState::Undef);
20562057
}
@@ -2062,7 +2063,8 @@ static void CMSEPushCalleeSaves(const TargetInstrInfo &TII,
20622063
// memory, and allow us to later pop them with a single instructions.
20632064
// FIXME: Could also use any of r0-r3 that are free (including in the
20642065
// first PUSH above).
2065-
for (int LoReg = ARM::R7, HiReg = ARM::R11; LoReg >= ARM::R4; --LoReg) {
2066+
for (unsigned LoReg = ARM::R7, HiReg = ARM::R11; LoReg >= ARM::R4;
2067+
--LoReg) {
20662068
if (JumpReg == LoReg)
20672069
continue;
20682070
BuildMI(MBB, MBBI, DL, TII.get(ARM::tMOVr), LoReg)
@@ -2072,7 +2074,7 @@ static void CMSEPushCalleeSaves(const TargetInstrInfo &TII,
20722074
}
20732075
MachineInstrBuilder PushMIB2 =
20742076
BuildMI(MBB, MBBI, DL, TII.get(ARM::tPUSH)).add(predOps(ARMCC::AL));
2075-
for (int Reg = ARM::R4; Reg < ARM::R8; ++Reg) {
2077+
for (unsigned Reg = ARM::R4; Reg < ARM::R8; ++Reg) {
20762078
if (Reg == JumpReg)
20772079
continue;
20782080
PushMIB2.addReg(Reg, RegState::Kill);
@@ -2082,7 +2084,7 @@ static void CMSEPushCalleeSaves(const TargetInstrInfo &TII,
20822084
// the JumpReg), use r4 or r5, whichever is not JumpReg. It has already been
20832085
// saved.
20842086
if (JumpReg >= ARM::R4 && JumpReg <= ARM::R7) {
2085-
int LoReg = JumpReg == ARM::R4 ? ARM::R5 : ARM::R4;
2087+
Register LoReg = JumpReg == ARM::R4 ? ARM::R5 : ARM::R4;
20862088
BuildMI(MBB, MBBI, DL, TII.get(ARM::tMOVr), LoReg)
20872089
.addReg(ARM::R8, LiveRegs.contains(ARM::R8) ? 0 : RegState::Undef)
20882090
.add(predOps(ARMCC::AL));
@@ -2095,7 +2097,7 @@ static void CMSEPushCalleeSaves(const TargetInstrInfo &TII,
20952097
BuildMI(MBB, MBBI, DL, TII.get(ARM::t2STMDB_UPD), ARM::SP)
20962098
.addReg(ARM::SP)
20972099
.add(predOps(ARMCC::AL));
2098-
for (int Reg = ARM::R4; Reg < ARM::R12; ++Reg) {
2100+
for (unsigned Reg = ARM::R4; Reg < ARM::R12; ++Reg) {
20992101
PushMIB.addReg(
21002102
Reg, Reg == JumpReg || LiveRegs.contains(Reg) ? 0 : RegState::Undef);
21012103
}
@@ -2125,7 +2127,7 @@ static void CMSEPopCalleeSaves(const TargetInstrInfo &TII,
21252127
BuildMI(MBB, MBBI, DL, TII.get(ARM::t2LDMIA_UPD), ARM::SP)
21262128
.addReg(ARM::SP)
21272129
.add(predOps(ARMCC::AL));
2128-
for (int Reg = ARM::R4; Reg < ARM::R12; ++Reg)
2130+
for (unsigned Reg = ARM::R4; Reg < ARM::R12; ++Reg)
21292131
PopMIB.addReg(Reg, RegState::Define);
21302132
}
21312133
}

llvm/utils/TableGen/RegisterInfoEmitter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ void RegisterInfoEmitter::runEnums(raw_ostream &OS, CodeGenTarget &Target,
123123

124124
if (!Namespace.empty())
125125
OS << "namespace " << Namespace << " {\n";
126-
OS << "enum {\n NoRegister,\n";
126+
OS << "enum : unsigned {\n NoRegister,\n";
127127

128128
for (const auto &Reg : Registers)
129129
OS << " " << Reg.getName() << " = " << Reg.EnumValue << ",\n";

0 commit comments

Comments
 (0)