Optimize this test. Firstly, only Instructions may use other Instructions.
authorNick Lewycky <nicholas@mxc.ca>
Wed, 6 Jun 2007 11:26:20 +0000 (11:26 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Wed, 6 Jun 2007 11:26:20 +0000 (11:26 +0000)
Secondly, checking whether removal succeeded tells you whether it was in
the map to begin with.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37469 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/ScalarEvolution.cpp

index b1c3a1772737d35662a6da38b4d3c541db3542ed..bf67fd3fffca2db3ec2e08ef34051af0a3487d07 100644 (file)
@@ -1210,8 +1210,8 @@ void ScalarEvolutionsImpl::deleteInstructionFromRecords(Instruction *I) {
 
     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)) {
+      Instruction *Inst = cast<Instruction>(*UI);
+      if (Scalars.erase(Inst)) {
         if (PHINode *PN = dyn_cast<PHINode>(II))
           ConstantEvolutionLoopExitValue.erase(PN);
         Worklist.push_back(Inst);