Index: include/llvm/Transforms/Utils/SSAUpdaterImpl.h =================================================================== --- include/llvm/Transforms/Utils/SSAUpdaterImpl.h +++ include/llvm/Transforms/Utils/SSAUpdaterImpl.h @@ -39,6 +39,7 @@ typedef typename Traits::BlkT BlkT; typedef typename Traits::ValT ValT; typedef typename Traits::PhiT PhiT; + typedef typename Traits::PhiItT PhiItT; /// BBInfo - Per-basic block information used internally by SSAUpdaterImpl. /// The predecessors of each block are cached here since pred_iterator is @@ -377,7 +378,7 @@ /// FindExistingPHI - Look through the PHI nodes in a block to see if any of /// them match what is needed. void FindExistingPHI(BlkT *BB, BlockListTy *BlockList) { - for (typename BlkT::iterator BBI = BB->begin(), BBE = BB->end(); + for (PhiItT BBI = Traits::PhiItT_begin(BB), BBE = Traits::PhiItT_end(BB); BBI != BBE; ++BBI) { PhiT *SomePHI = Traits::InstrIsPHI(&*BBI); if (!SomePHI) Index: lib/CodeGen/MachineSSAUpdater.cpp =================================================================== --- lib/CodeGen/MachineSSAUpdater.cpp +++ lib/CodeGen/MachineSSAUpdater.cpp @@ -246,6 +246,11 @@ static BlkSucc_iterator BlkSucc_begin(BlkT *BB) { return BB->succ_begin(); } static BlkSucc_iterator BlkSucc_end(BlkT *BB) { return BB->succ_end(); } + /// Iterator over phis in a block. + typedef BlkT::iterator PhiItT; + static PhiItT PhiItT_begin(BlkT *BB) { return BB->begin(); } + static PhiItT PhiItT_end(BlkT *BB) { return BB->end(); } + /// Iterator for PHI operands. class PHI_iterator { private: Index: lib/Transforms/Utils/SSAUpdater.cpp =================================================================== --- lib/Transforms/Utils/SSAUpdater.cpp +++ lib/Transforms/Utils/SSAUpdater.cpp @@ -216,6 +216,11 @@ static BlkSucc_iterator BlkSucc_begin(BlkT *BB) { return succ_begin(BB); } static BlkSucc_iterator BlkSucc_end(BlkT *BB) { return succ_end(BB); } + /// Iterator over phis in a block. + typedef BlkT::iterator PhiItT; + static PhiItT PhiItT_begin(BlkT *BB) { return BB->begin(); } + static PhiItT PhiItT_end(BlkT *BB) { return BB->end(); } + class PHI_iterator { private: PHINode *PHI;