summaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/ReachingDefAnalysis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/ReachingDefAnalysis.cpp')
-rw-r--r--llvm/lib/CodeGen/ReachingDefAnalysis.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/llvm/lib/CodeGen/ReachingDefAnalysis.cpp b/llvm/lib/CodeGen/ReachingDefAnalysis.cpp
index 61706e13b8e9..b12a5bc64ca0 100644
--- a/llvm/lib/CodeGen/ReachingDefAnalysis.cpp
+++ b/llvm/lib/CodeGen/ReachingDefAnalysis.cpp
@@ -134,8 +134,8 @@ void ReachingDefInfo::enterBasicBlock(MachineBasicBlock *MBB) {
// Treat function live-ins as if they were defined just before the first
// instruction. Usually, function arguments are set up immediately
// before the call.
- if (LiveRegs[Unit] != -1) {
- LiveRegs[Unit] = -1;
+ if (LiveRegs[static_cast<unsigned>(Unit)] != -1) {
+ LiveRegs[static_cast<unsigned>(Unit)] = -1;
MBBReachingDefs.append(MBBNumber, Unit, -1);
}
}
@@ -162,7 +162,8 @@ void ReachingDefInfo::enterBasicBlock(MachineBasicBlock *MBB) {
// Insert the most recent reaching definition we found.
for (unsigned Unit = 0; Unit != NumRegUnits; ++Unit)
if (LiveRegs[Unit] != ReachingDefDefaultVal)
- MBBReachingDefs.append(MBBNumber, Unit, LiveRegs[Unit]);
+ MBBReachingDefs.append(MBBNumber, static_cast<MCRegUnit>(Unit),
+ LiveRegs[Unit]);
}
void ReachingDefInfo::leaveBasicBlock(MachineBasicBlock *MBB) {
@@ -205,8 +206,8 @@ void ReachingDefInfo::processDefs(MachineInstr *MI) {
<< *MI);
// How many instructions since this reg unit was last written?
- if (LiveRegs[Unit] != CurInstr) {
- LiveRegs[Unit] = CurInstr;
+ if (LiveRegs[static_cast<unsigned>(Unit)] != CurInstr) {
+ LiveRegs[static_cast<unsigned>(Unit)] = CurInstr;
MBBReachingDefs.append(MBBNumber, Unit, CurInstr);
}
}
@@ -240,16 +241,17 @@ void ReachingDefInfo::reprocessBasicBlock(MachineBasicBlock *MBB) {
if (Def == ReachingDefDefaultVal)
continue;
- auto Defs = MBBReachingDefs.defs(MBBNumber, Unit);
+ auto Defs = MBBReachingDefs.defs(MBBNumber, static_cast<MCRegUnit>(Unit));
if (!Defs.empty() && Defs.front() < 0) {
if (Defs.front() >= Def)
continue;
// Update existing reaching def from predecessor to a more recent one.
- MBBReachingDefs.replaceFront(MBBNumber, Unit, Def);
+ MBBReachingDefs.replaceFront(MBBNumber, static_cast<MCRegUnit>(Unit),
+ Def);
} else {
// Insert new reaching def from predecessor.
- MBBReachingDefs.prepend(MBBNumber, Unit, Def);
+ MBBReachingDefs.prepend(MBBNumber, static_cast<MCRegUnit>(Unit), Def);
}
// Update reaching def at end of BB. Keep in mind that these are
@@ -370,7 +372,8 @@ void ReachingDefInfo::traverse() {
MBBNumber != NumBlockIDs; ++MBBNumber) {
for (unsigned Unit = 0; Unit != NumRegUnits; ++Unit) {
int LastDef = ReachingDefDefaultVal;
- for (int Def : MBBReachingDefs.defs(MBBNumber, Unit)) {
+ for (int Def :
+ MBBReachingDefs.defs(MBBNumber, static_cast<MCRegUnit>(Unit))) {
assert(Def > LastDef && "Defs must be sorted and unique");
LastDef = Def;
}