Subzero: Avoid explicit references to RegNumT sentinel value.
There are many occurrences of if (RegNum == RegNumT::NoRegister).
This patch eliminates NoRegister and provides a simpler mechanism for declaring and testing RegNumT values to see if they are undefined.
BUG= none
R=stichnot@chromium.org
Review URL: https://codereview.chromium.org/1691193002 .
Patch from Reed Kotler <rkotlerimgtec@gmail.com>.
diff --git a/src/IceRegAlloc.cpp b/src/IceRegAlloc.cpp
index f59cb3c..993dc44 100644
--- a/src/IceRegAlloc.cpp
+++ b/src/IceRegAlloc.cpp
@@ -502,7 +502,7 @@
// not appear within the current Variable's live range.
void LinearScan::findRegisterPreference(IterationState &Iter) {
Iter.Prefer = nullptr;
- Iter.PreferReg = RegNumT::NoRegister;
+ Iter.PreferReg = RegNumT();
Iter.AllowOverlap = false;
if (!FindPreference)
@@ -738,7 +738,7 @@
--RegUses[RegAlias];
assert(RegUses[RegAlias] >= 0);
}
- Item->setRegNumTmp(RegNumT::NoRegister);
+ Item->setRegNumTmp(RegNumT());
moveItem(Active, Index, Handled);
Evicted.push_back(Item);
}
@@ -756,7 +756,7 @@
// instructions.
if (Aliases[Item->getRegNumTmp()] && Item->rangeOverlaps(Iter.Cur)) {
dumpLiveRangeTrace("Evicting I ", Item);
- Item->setRegNumTmp(RegNumT::NoRegister);
+ Item->setRegNumTmp(RegNumT());
moveItem(Inactive, Index, Handled);
Evicted.push_back(Item);
}