Index: src/IceCfgNode.cpp |
diff --git a/src/IceCfgNode.cpp b/src/IceCfgNode.cpp |
index 920f373783285335317a93e03cb5d5afd21bebda..aa8ba7a8fee016f4f37fd894feed9eada4c4c7a8 100644 |
--- a/src/IceCfgNode.cpp |
+++ b/src/IceCfgNode.cpp |
@@ -57,7 +57,7 @@ void CfgNode::appendInst(Inst *Inst) { |
// overlap with the range of any other block. |
void CfgNode::renumberInstructions() { |
InstNumberT FirstNumber = Func->getNextInstNumber(); |
- for (InstPhi *I : Phis) |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) |
I->renumber(Func); |
for (auto I = Insts.begin(), E = Insts.end(); I != E; ++I) |
I->renumber(Func); |
@@ -86,8 +86,10 @@ void CfgNode::computePredecessors() { |
// instructions and appends assignment instructions to predecessor |
// blocks. Note that this transformation preserves SSA form. |
void CfgNode::placePhiLoads() { |
- for (InstPhi *I : Phis) |
- Insts.insert(Insts.begin(), I->lower(Func)); |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) { |
+ auto Phi = llvm::dyn_cast<InstPhi>(I); |
+ Insts.insert(Insts.begin(), Phi->lower(Func)); |
+ } |
} |
// This does part 2 of Phi lowering. For each Phi instruction at each |
@@ -184,8 +186,9 @@ void CfgNode::placePhiStores() { |
// Consider every out-edge. |
for (CfgNode *Succ : OutEdges) { |
// Consider every Phi instruction at the out-edge. |
- for (InstPhi *I : Succ->Phis) { |
- Operand *Operand = I->getOperandForTarget(this); |
+ for (auto I = Succ->Phis.begin(), E = Succ->Phis.end(); I != E; ++I) { |
+ auto Phi = llvm::dyn_cast<InstPhi>(I); |
+ Operand *Operand = Phi->getOperandForTarget(this); |
assert(Operand); |
Variable *Dest = I->getDest(); |
assert(Dest); |
@@ -200,7 +203,7 @@ void CfgNode::placePhiStores() { |
// Deletes the phi instructions after the loads and stores are placed. |
void CfgNode::deletePhis() { |
- for (InstPhi *I : Phis) |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) |
I->setDeleted(); |
} |
@@ -316,7 +319,8 @@ void CfgNode::advancedPhiLowering() { |
} Desc[getPhis().size()]; |
size_t NumPhis = 0; |
- for (InstPhi *Inst : getPhis()) { |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) { |
+ auto Inst = llvm::dyn_cast<InstPhi>(I); |
if (!Inst->isDeleted()) { |
Desc[NumPhis].Phi = Inst; |
Desc[NumPhis].Dest = Inst->getDest(); |
@@ -470,8 +474,8 @@ void CfgNode::advancedPhiLowering() { |
Func->getVMetadata()->addNode(Split); |
} |
- for (InstPhi *Inst : getPhis()) |
- Inst->setDeleted(); |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) |
+ I->setDeleted(); |
} |
// Does address mode optimization. Pass each instruction to the |
@@ -534,7 +538,7 @@ void CfgNode::livenessLightweight() { |
continue; |
I->livenessLightweight(Func, Live); |
} |
- for (InstPhi *I : Phis) { |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) { |
if (I->isDeleted()) |
continue; |
I->livenessLightweight(Func, Live); |
@@ -566,8 +570,10 @@ bool CfgNode::liveness(Liveness *Liveness) { |
for (CfgNode *Succ : OutEdges) { |
Live |= Liveness->getLiveIn(Succ); |
// Mark corresponding argument of phis in successor as live. |
- for (InstPhi *I : Succ->Phis) |
- I->livenessPhiOperand(Live, this, Liveness); |
+ for (auto I = Succ->Phis.begin(), E = Succ->Phis.end(); I != E; ++I) { |
+ auto Phi = llvm::dyn_cast<InstPhi>(I); |
+ Phi->livenessPhiOperand(Live, this, Liveness); |
+ } |
} |
Liveness->getLiveOut(this) = Live; |
@@ -582,7 +588,7 @@ bool CfgNode::liveness(Liveness *Liveness) { |
// the block. |
SizeT NumNonDeadPhis = 0; |
InstNumberT FirstPhiNumber = Inst::NumberSentinel; |
- for (InstPhi *I : Phis) { |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) { |
if (I->isDeleted()) |
continue; |
if (FirstPhiNumber == Inst::NumberSentinel) |
@@ -644,7 +650,7 @@ void CfgNode::livenessPostprocess(LivenessMode Mode, Liveness *Liveness) { |
InstNumberT FirstInstNum = Inst::NumberSentinel; |
InstNumberT LastInstNum = Inst::NumberSentinel; |
// Process phis in any order. Process only Dest operands. |
- for (InstPhi *I : Phis) { |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) { |
I->deleteIfDead(); |
if (I->isDeleted()) |
continue; |
@@ -889,12 +895,11 @@ void CfgNode::emit(Cfg *Func) const { |
if (DecorateAsm) |
emitRegisterUsage(Str, Func, this, true, LiveRegCount); |
- for (InstPhi *Phi : Phis) { |
- if (Phi->isDeleted()) |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) { |
+ if (I->isDeleted()) |
continue; |
// Emitting a Phi instruction should cause an error. |
- Inst *Instr = Phi; |
- Instr->emit(Func); |
+ I->emit(Func); |
} |
for (auto I = Insts.begin(), E = Insts.end(); I != E; ++I) { |
if (I->isDeleted()) |
@@ -919,12 +924,11 @@ void CfgNode::emitIAS(Cfg *Func) const { |
Func->setCurrentNode(this); |
Assembler *Asm = Func->getAssembler<Assembler>(); |
Asm->BindCfgNodeLabel(getIndex()); |
- for (InstPhi *Phi : Phis) { |
- if (Phi->isDeleted()) |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) { |
+ if (I->isDeleted()) |
continue; |
// Emitting a Phi instruction should cause an error. |
- Inst *Instr = Phi; |
- Instr->emitIAS(Func); |
+ I->emitIAS(Func); |
} |
for (auto I = Insts.begin(), E = Insts.end(); I != E; ++I) { |
if (I->isDeleted()) |
@@ -977,7 +981,7 @@ void CfgNode::dump(Cfg *Func) const { |
} |
// Dump each instruction. |
if (Func->getContext()->isVerbose(IceV_Instructions)) { |
- for (InstPhi *I : Phis) |
+ for (auto I = Phis.begin(), E = Phis.end(); I != E; ++I) |
I->dumpDecorated(Func); |
for (auto I = Insts.begin(), E = Insts.end(); I != E; ++I) |
I->dumpDecorated(Func); |