Fix a FIXME. The SlotIndex::Slot enum should be private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110826 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen
2010-08-11 16:50:17 +00:00
parent 3cc5d13f58
commit dfa28b157d
2 changed files with 30 additions and 16 deletions

View File

@@ -128,7 +128,8 @@ namespace llvm {
friend class SlotIndexes; friend class SlotIndexes;
friend struct DenseMapInfo<SlotIndex>; friend struct DenseMapInfo<SlotIndex>;
private: enum Slot { LOAD, USE, DEF, STORE, NUM };
static const unsigned PHI_BIT = 1 << 2; static const unsigned PHI_BIT = 1 << 2;
PointerIntPair<IndexListEntry*, 3, unsigned> lie; PointerIntPair<IndexListEntry*, 3, unsigned> lie;
@@ -146,6 +147,11 @@ namespace llvm {
return entry().getIndex() | getSlot(); return entry().getIndex() | getSlot();
} }
/// Returns the slot for this SlotIndex.
Slot getSlot() const {
return static_cast<Slot>(lie.getInt() & ~PHI_BIT);
}
static inline unsigned getHashValue(const SlotIndex &v) { static inline unsigned getHashValue(const SlotIndex &v) {
IndexListEntry *ptrVal = &v.entry(); IndexListEntry *ptrVal = &v.entry();
return (unsigned((intptr_t)ptrVal) >> 4) ^ return (unsigned((intptr_t)ptrVal) >> 4) ^
@@ -153,11 +159,6 @@ namespace llvm {
} }
public: public:
// FIXME: Ugh. This is public because LiveIntervalAnalysis is still using it
// for some spill weight stuff. Fix that, then make this private.
enum Slot { LOAD, USE, DEF, STORE, NUM };
static inline SlotIndex getEmptyKey() { static inline SlotIndex getEmptyKey() {
return SlotIndex(IndexListEntry::getEmptyKeyEntry(), 0); return SlotIndex(IndexListEntry::getEmptyKeyEntry(), 0);
} }
@@ -235,16 +236,31 @@ namespace llvm {
return other.getIndex() - getIndex(); return other.getIndex() - getIndex();
} }
/// Returns the slot for this SlotIndex.
Slot getSlot() const {
return static_cast<Slot>(lie.getInt() & ~PHI_BIT);
}
/// Returns the state of the PHI bit. /// Returns the state of the PHI bit.
bool isPHI() const { bool isPHI() const {
return lie.getInt() & PHI_BIT; return lie.getInt() & PHI_BIT;
} }
/// isLoad - Return true if this is a LOAD slot.
bool isLoad() const {
return getSlot() == LOAD;
}
/// isDef - Return true if this is a DEF slot.
bool isDef() const {
return getSlot() == DEF;
}
/// isUse - Return true if this is a USE slot.
bool isUse() const {
return getSlot() == USE;
}
/// isStore - Return true if this is a STORE slot.
bool isStore() const {
return getSlot() == STORE;
}
/// Returns the base index for associated with this index. The base index /// Returns the base index for associated with this index. The base index
/// is the one associated with the LOAD slot for the instruction pointed to /// is the one associated with the LOAD slot for the instruction pointed to
/// by this index. /// by this index.

View File

@@ -551,11 +551,9 @@ namespace llvm {
return AliveStack; return AliveStack;
} }
} else { } else {
if (i.getSlot() == SlotIndex::DEF && if (i.isDef() && mi->definesRegister(li->reg, tri)) {
mi->definesRegister(li->reg, tri)) {
return Defined; return Defined;
} else if (i.getSlot() == SlotIndex::USE && } else if (i.isUse() && mi->readsRegister(li->reg)) {
mi->readsRegister(li->reg)) {
return Used; return Used;
} else { } else {
if (vrm == 0 || if (vrm == 0 ||
@@ -771,7 +769,7 @@ namespace llvm {
os << indent + s(2) << "<tr height=6ex>\n"; os << indent + s(2) << "<tr height=6ex>\n";
// Render the code column. // Render the code column.
if (i.getSlot() == SlotIndex::LOAD) { if (i.isLoad()) {
MachineBasicBlock *mbb = sis->getMBBFromIndex(i); MachineBasicBlock *mbb = sis->getMBBFromIndex(i);
mi = sis->getInstructionFromIndex(i); mi = sis->getInstructionFromIndex(i);