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
llvm/lib/CodeGen
|
@ -112,11 +112,18 @@ TargetRegisterInfo::getAllocatableClass(const TargetRegisterClass *RC) const {
|
||||||
if (!RC || RC->isAllocatable())
|
if (!RC || RC->isAllocatable())
|
||||||
return RC;
|
return RC;
|
||||||
|
|
||||||
for (BitMaskClassIterator It(RC->getSubClassMask(), *this); It.isValid();
|
const unsigned *SubClass = RC->getSubClassMask();
|
||||||
++It) {
|
for (unsigned Base = 0, BaseE = getNumRegClasses();
|
||||||
const TargetRegisterClass *SubRC = getRegClass(It.getID());
|
Base < BaseE; Base += 32) {
|
||||||
if (SubRC->isAllocatable())
|
unsigned Idx = Base;
|
||||||
return SubRC;
|
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;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue