BasicBlock::iterator BI = BB.begin(); BasicBlock::iterator E = BB.end(); Instruction* I; for (; I != E;) { I = BI++; // Do some analysis >with I and get V I->replaceAllUsesWith(V); I->eraseFromParent(); }