> Fix PR1487: http://llvm.org/PR1487 and Transforms/IndVar/ > 2007-06-06-DeleteDanglesPtr.ll
Thanks Nicholas, > /// client before it removes an instruction from the program, to > make sure > /// that no dangling references are left around. > void ScalarEvolutionsImpl::deleteInstructionFromRecords > (Instruction *I) { > + while (!Worklist.empty()) { > + Instruction *II = Worklist.back(); > + Worklist.pop_back(); > + > + for (Instruction::use_iterator UI = II->use_begin(), UE = II- > >use_end(); > + UI != UE; ++UI) { > + Instruction *Inst = dyn_cast<Instruction>(*UI); > + if (Inst && hasSCEV(Inst) && Scalars.erase(Inst)) { One more thing, sorry I didn't notice this before: The only thing that can use Instructions are other intstructions. As such, you can change the dyn_cast<instruction> into cast<instruction> and there is no need to check for null in the next line. -Chris > + if (PHINode *PN = dyn_cast<PHINode>(II)) > + ConstantEvolutionLoopExitValue.erase(PN); > + Worklist.push_back(Inst); > + } > + } > + } > } > > > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits