mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Merge MRI::isPhysRegOrOverlapUsed() into isPhysRegUsed().
All callers of these functions really want the isPhysRegOrOverlapUsed() functionality which also checks aliases. For historical reasons, targets without register aliases were calling isPhysRegUsed() instead. Change isPhysRegUsed() to also check aliases, and switch all isPhysRegOrOverlapUsed() callers to isPhysRegUsed(). llvm-svn: 166117
This commit is contained in:
parent
a2f8199a1f
commit
19bfbc3745
@ -357,14 +357,13 @@ public:
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
||||
/// isPhysRegUsed - Return true if the specified register is used in this
|
||||
/// function. This only works after register allocation.
|
||||
/// function. Also check for clobbered aliases and registers clobbered by
|
||||
/// function calls with register mask operands.
|
||||
///
|
||||
/// This only works after register allocation. It is primarily used by
|
||||
/// PrologEpilogInserter to determine which callee-saved registers need
|
||||
/// spilling.
|
||||
bool isPhysRegUsed(unsigned Reg) const {
|
||||
return UsedPhysRegs.test(Reg) || UsedPhysRegMask.test(Reg);
|
||||
}
|
||||
|
||||
/// isPhysRegOrOverlapUsed - Return true if Reg or any overlapping register
|
||||
/// is used in this function.
|
||||
bool isPhysRegOrOverlapUsed(unsigned Reg) const {
|
||||
if (UsedPhysRegMask.test(Reg))
|
||||
return true;
|
||||
for (MCRegAliasIterator AI(Reg, TRI, true); AI.isValid(); ++AI)
|
||||
|
@ -657,7 +657,7 @@ bool ExeDepsFix::runOnMachineFunction(MachineFunction &mf) {
|
||||
bool anyregs = false;
|
||||
for (TargetRegisterClass::const_iterator I = RC->begin(), E = RC->end();
|
||||
I != E; ++I)
|
||||
if (MF->getRegInfo().isPhysRegOrOverlapUsed(*I)) {
|
||||
if (MF->getRegInfo().isPhysRegUsed(*I)) {
|
||||
anyregs = true;
|
||||
break;
|
||||
}
|
||||
|
@ -227,7 +227,7 @@ void PEI::calculateCalleeSavedRegisters(MachineFunction &Fn) {
|
||||
std::vector<CalleeSavedInfo> CSI;
|
||||
for (unsigned i = 0; CSRegs[i]; ++i) {
|
||||
unsigned Reg = CSRegs[i];
|
||||
if (Fn.getRegInfo().isPhysRegOrOverlapUsed(Reg)) {
|
||||
if (Fn.getRegInfo().isPhysRegUsed(Reg)) {
|
||||
// If the reg is modified, save it!
|
||||
CSI.push_back(CalleeSavedInfo(Reg));
|
||||
}
|
||||
|
@ -1176,7 +1176,7 @@ static void checkNumAlignedDPRCS2Regs(MachineFunction &MF) {
|
||||
MachineRegisterInfo &MRI = MF.getRegInfo();
|
||||
unsigned NumSpills = 0;
|
||||
for (; NumSpills < 8; ++NumSpills)
|
||||
if (!MRI.isPhysRegOrOverlapUsed(ARM::D8 + NumSpills))
|
||||
if (!MRI.isPhysRegUsed(ARM::D8 + NumSpills))
|
||||
break;
|
||||
|
||||
// Don't do this for just one d-register. It's not worth it.
|
||||
@ -1249,7 +1249,7 @@ ARMFrameLowering::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
|
||||
for (unsigned i = 0; CSRegs[i]; ++i) {
|
||||
unsigned Reg = CSRegs[i];
|
||||
bool Spilled = false;
|
||||
if (MF.getRegInfo().isPhysRegOrOverlapUsed(Reg)) {
|
||||
if (MF.getRegInfo().isPhysRegUsed(Reg)) {
|
||||
Spilled = true;
|
||||
CanEliminateFrame = false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user