Skip to content

Commit 08c69b2

Browse files
committed
Revert "[CodeGen] Remove static member function Register::isVirtualRegister. NFC (#127968)"
This reverts commit ff99af7.
1 parent 309e3ca commit 08c69b2

27 files changed

+59
-50
lines changed

llvm/include/llvm/CodeGen/RDFRegisters.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ struct RegisterRef {
114114
return Register::isPhysicalRegister(Id);
115115
}
116116
static constexpr bool isUnitId(unsigned Id) {
117-
return Register(Id).isVirtual();
117+
return Register::isVirtualRegister(Id);
118118
}
119119
static constexpr bool isMaskId(unsigned Id) { return Register(Id).isStack(); }
120120

llvm/include/llvm/CodeGen/Register.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ class Register {
5454
return MCRegister::isPhysicalRegister(Reg);
5555
}
5656

57+
/// Return true if the specified register number is in
58+
/// the virtual register namespace.
59+
static constexpr bool isVirtualRegister(unsigned Reg) {
60+
return Reg & MCRegister::VirtualRegFlag;
61+
}
62+
5763
/// Convert a 0-based index to a virtual register number.
5864
/// This is the inverse operation of VirtReg2IndexFunctor below.
5965
static Register index2VirtReg(unsigned Index) {
@@ -63,7 +69,7 @@ class Register {
6369

6470
/// Return true if the specified register number is in the virtual register
6571
/// namespace.
66-
constexpr bool isVirtual() const { return Reg & MCRegister::VirtualRegFlag; }
72+
constexpr bool isVirtual() const { return isVirtualRegister(Reg); }
6773

6874
/// Return true if the specified register number is in the physical register
6975
/// namespace.
@@ -150,14 +156,14 @@ class VirtRegOrUnit {
150156

151157
public:
152158
constexpr explicit VirtRegOrUnit(MCRegUnit Unit) : VRegOrUnit(Unit) {
153-
assert(!Register(VRegOrUnit).isVirtual());
159+
assert(!Register::isVirtualRegister(VRegOrUnit));
154160
}
155161
constexpr explicit VirtRegOrUnit(Register Reg) : VRegOrUnit(Reg.id()) {
156162
assert(Reg.isVirtual());
157163
}
158164

159165
constexpr bool isVirtualReg() const {
160-
return Register(VRegOrUnit).isVirtual();
166+
return Register::isVirtualRegister(VRegOrUnit);
161167
}
162168

163169
constexpr MCRegUnit asMCRegUnit() const {

llvm/lib/CodeGen/EarlyIfConversion.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,8 +522,8 @@ bool SSAIfConv::canConvertIf(MachineBasicBlock *MBB, bool Predicate) {
522522
if (PI.PHI->getOperand(i+1).getMBB() == FPred)
523523
PI.FReg = PI.PHI->getOperand(i).getReg();
524524
}
525-
assert(Register(PI.TReg).isVirtual() && "Bad PHI");
526-
assert(Register(PI.FReg).isVirtual() && "Bad PHI");
525+
assert(Register::isVirtualRegister(PI.TReg) && "Bad PHI");
526+
assert(Register::isVirtualRegister(PI.FReg) && "Bad PHI");
527527

528528
// Get target information.
529529
if (!TII->canInsertSelect(*Head, Cond, PI.PHI->getOperand(0).getReg(),

llvm/lib/CodeGen/LiveInterval.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,7 @@ static void stripValuesNotDefiningMask(unsigned Reg, LiveInterval::SubRange &SR,
876876
unsigned ComposeSubRegIdx) {
877877
// Phys reg should not be tracked at subreg level.
878878
// Same for noreg (Reg == 0).
879-
if (!Register(Reg).isVirtual() || !Reg)
879+
if (!Register::isVirtualRegister(Reg) || !Reg)
880880
return;
881881
// Remove the values that don't define those lanes.
882882
SmallVector<VNInfo *, 8> ToBeRemoved;

llvm/lib/CodeGen/MIRVRegNamerUtils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ std::string VRegRenamer::getInstructionOpcodeHash(MachineInstr &MI) {
137137
}
138138

139139
unsigned VRegRenamer::createVirtualRegister(unsigned VReg) {
140-
assert(Register(VReg).isVirtual() && "Expected Virtual Registers");
140+
assert(Register::isVirtualRegister(VReg) && "Expected Virtual Registers");
141141
std::string Name = getInstructionOpcodeHash(*MRI.getVRegDef(VReg));
142142
return createVirtualRegisterWithLowerName(VReg, Name);
143143
}

llvm/lib/CodeGen/MachineTraceMetrics.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,7 @@ struct DataDep {
682682
/// Create a DataDep from an SSA form virtual register.
683683
DataDep(const MachineRegisterInfo *MRI, unsigned VirtReg, unsigned UseOp)
684684
: UseOp(UseOp) {
685-
assert(Register(VirtReg).isVirtual());
685+
assert(Register::isVirtualRegister(VirtReg));
686686
MachineOperand *DefMO = MRI->getOneDef(VirtReg);
687687
assert(DefMO && "Register does not have unique def");
688688
DefMI = DefMO->getParent();

llvm/lib/CodeGen/RegisterPressure.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ void LiveRegSet::clear() {
231231
}
232232

233233
static const LiveRange *getLiveRange(const LiveIntervals &LIS, unsigned Reg) {
234-
if (Register(Reg).isVirtual())
234+
if (Register::isVirtualRegister(Reg))
235235
return &LIS.getInterval(Reg);
236236
return LIS.getCachedRegUnit(Reg);
237237
}

llvm/lib/CodeGen/SelectionDAG/FastISel.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2229,7 +2229,8 @@ Register FastISel::fastEmitInst_i(unsigned MachineInstOpcode,
22292229
Register FastISel::fastEmitInst_extractsubreg(MVT RetVT, unsigned Op0,
22302230
uint32_t Idx) {
22312231
Register ResultReg = createResultReg(TLI.getRegClassFor(RetVT));
2232-
assert(Register(Op0).isVirtual() && "Cannot yet extract from physregs");
2232+
assert(Register::isVirtualRegister(Op0) &&
2233+
"Cannot yet extract from physregs");
22332234
const TargetRegisterClass *RC = MRI.getRegClass(Op0);
22342235
MRI.constrainRegClass(Op0, TRI.getSubClassWithSubReg(RC, Idx));
22352236
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, MIMD, TII.get(TargetOpcode::COPY),

llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,11 @@ static void CheckForPhysRegDependency(SDNode *Def, SDNode *User, unsigned Op,
116116
if (Op != 2 || User->getOpcode() != ISD::CopyToReg)
117117
return;
118118

119-
Register Reg = cast<RegisterSDNode>(User->getOperand(1))->getReg();
119+
unsigned Reg = cast<RegisterSDNode>(User->getOperand(1))->getReg();
120120
if (TLI.checkForPhysRegDependency(Def, User, Op, TRI, TII, PhysReg, Cost))
121121
return;
122122

123-
if (Reg.isVirtual())
123+
if (Register::isVirtualRegister(Reg))
124124
return;
125125

126126
unsigned ResNo = User->getOperand(2).getResNo();
@@ -664,8 +664,8 @@ void ScheduleDAGSDNodes::computeOperandLatency(SDNode *Def, SDNode *Use,
664664
TII->getOperandLatency(InstrItins, Def, DefIdx, Use, OpIdx);
665665
if (Latency > 1U && Use->getOpcode() == ISD::CopyToReg &&
666666
!BB->succ_empty()) {
667-
Register Reg = cast<RegisterSDNode>(Use->getOperand(1))->getReg();
668-
if (Reg.isVirtual())
667+
unsigned Reg = cast<RegisterSDNode>(Use->getOperand(1))->getReg();
668+
if (Register::isVirtualRegister(Reg))
669669
// This copy is a liveout value. It is likely coalesced, so reduce the
670670
// latency so not to penalize the def.
671671
// FIXME: need target specific adjustment here?

llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -908,7 +908,8 @@ SDValue RegsForValue::getCopyFromRegs(SelectionDAG &DAG,
908908

909909
// If the source register was virtual and if we know something about it,
910910
// add an assert node.
911-
if (!Regs[Part + i].isVirtual() || !RegisterVT.isInteger())
911+
if (!Register::isVirtualRegister(Regs[Part + i]) ||
912+
!RegisterVT.isInteger())
912913
continue;
913914

914915
const FunctionLoweringInfo::LiveOutInfo *LOI =
@@ -1022,7 +1023,7 @@ void RegsForValue::AddInlineAsmOperands(InlineAsm::Kind Code, bool HasMatching,
10221023
InlineAsm::Flag Flag(Code, Regs.size());
10231024
if (HasMatching)
10241025
Flag.setMatchingOp(MatchingIdx);
1025-
else if (!Regs.empty() && Regs.front().isVirtual()) {
1026+
else if (!Regs.empty() && Register::isVirtualRegister(Regs.front())) {
10261027
// Put the register class of the virtual registers in the flag word. That
10271028
// way, later passes can recompute register class constraints for inline
10281029
// assembly as well as normal instructions.

0 commit comments

Comments
 (0)