forked from OSchip/llvm-project
Revert "[TargetRegisterInfo] Refactor the code to use BitMaskClassIterator."
This reverts commit r265734. Looks like ASan is not happy about it. http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/11741 Looking. llvm-svn: 265755
This commit is contained in:
parent
dcf5cf6a29
commit
e0a7ffa6cb
|
@ -112,11 +112,18 @@ TargetRegisterInfo::getAllocatableClass(const TargetRegisterClass *RC) const {
|
|||
if (!RC || RC->isAllocatable())
|
||||
return RC;
|
||||
|
||||
for (BitMaskClassIterator It(RC->getSubClassMask(), *this); It.isValid();
|
||||
++It) {
|
||||
const TargetRegisterClass *SubRC = getRegClass(It.getID());
|
||||
if (SubRC->isAllocatable())
|
||||
return SubRC;
|
||||
const unsigned *SubClass = RC->getSubClassMask();
|
||||
for (unsigned Base = 0, BaseE = getNumRegClasses();
|
||||
Base < BaseE; Base += 32) {
|
||||
unsigned Idx = Base;
|
||||
for (unsigned Mask = *SubClass++; Mask; Mask >>= 1) {
|
||||
unsigned Offset = countTrailingZeros(Mask);
|
||||
const TargetRegisterClass *SubRC = getRegClass(Idx + Offset);
|
||||
if (SubRC->isAllocatable())
|
||||
return SubRC;
|
||||
Mask >>= Offset;
|
||||
Idx += Offset + 1;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue