mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-27 06:54:30 +00:00
Use MRI::getSimpleHint() instead of getRegAllocPref() in remaining cases.
Targets can provide multiple hints now, so getRegAllocPref() doesn't make sense any longer because it only returns one preferred register. Replace it with getSimpleHint() in the remaining heuristics. This function only llvm-svn: 169188
This commit is contained in:
parent
4c21a13abd
commit
d099763751
@ -130,9 +130,7 @@ namespace llvm {
|
||||
unsigned getRegAllocPref(unsigned virtReg);
|
||||
|
||||
/// @brief returns true if VirtReg is assigned to its preferred physreg.
|
||||
bool hasPreferredPhys(unsigned VirtReg) {
|
||||
return getPhys(VirtReg) == getRegAllocPref(VirtReg);
|
||||
}
|
||||
bool hasPreferredPhys(unsigned VirtReg);
|
||||
|
||||
/// @brief returns true if VirtReg has a known preferred register.
|
||||
/// This returns false if VirtReg has a preference that is a virtual
|
||||
|
@ -526,7 +526,7 @@ void RegAllocPBQP::finalizeAlloc() const {
|
||||
itr != end; ++itr) {
|
||||
LiveInterval *li = &lis->getInterval(*itr);
|
||||
|
||||
unsigned physReg = vrm->getRegAllocPref(li->reg);
|
||||
unsigned physReg = mri->getSimpleHint(li->reg);
|
||||
|
||||
if (physReg == 0) {
|
||||
const TargetRegisterClass *liRC = mri->getRegClass(li->reg);
|
||||
|
@ -88,6 +88,15 @@ unsigned VirtRegMap::getRegAllocPref(unsigned virtReg) {
|
||||
return TRI->ResolveRegAllocHint(Hint.first, physReg, *MF);
|
||||
}
|
||||
|
||||
bool VirtRegMap::hasPreferredPhys(unsigned VirtReg) {
|
||||
unsigned Hint = MRI->getSimpleHint(VirtReg);
|
||||
if (!Hint)
|
||||
return 0;
|
||||
if (TargetRegisterInfo::isVirtualRegister(Hint))
|
||||
Hint = getPhys(Hint);
|
||||
return getPhys(VirtReg) == Hint;
|
||||
}
|
||||
|
||||
bool VirtRegMap::hasKnownPreference(unsigned VirtReg) {
|
||||
std::pair<unsigned, unsigned> Hint = MRI->getRegAllocationHint(VirtReg);
|
||||
if (TargetRegisterInfo::isPhysicalRegister(Hint.second))
|
||||
|
Loading…
x
Reference in New Issue
Block a user