]> granicus.if.org Git - llvm/commitdiff
[InstCombine] When adding an Instruction and its Users to the worklist at the same...
authorCraig Topper <craig.topper@gmail.com>
Fri, 31 Mar 2017 21:35:30 +0000 (21:35 +0000)
committerCraig Topper <craig.topper@gmail.com>
Fri, 31 Mar 2017 21:35:30 +0000 (21:35 +0000)
This way we ensure we immediately revisit the instruction and do any additional optimizations before visiting the users. Otherwise we might visit the users, then the instruction, then users again, then instruction again.

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

lib/Transforms/InstCombine/InstructionCombining.cpp

index 5b5c99aca008ff3137bf02ad2dff0a6d823edc25..94e7a7f2ade47d5255273506353d6d146af2a358 100644 (file)
@@ -2935,8 +2935,8 @@ bool InstCombiner::run() {
         Result->takeName(I);
 
         // Push the new instruction and any users onto the worklist.
-        Worklist.Add(Result);
         Worklist.AddUsersToWorkList(*Result);
+        Worklist.Add(Result);
 
         // Insert the new instruction into the basic block...
         BasicBlock *InstParent = I->getParent();
@@ -2959,8 +2959,8 @@ bool InstCombiner::run() {
         if (isInstructionTriviallyDead(I, &TLI)) {
           eraseInstFromFunction(*I);
         } else {
-          Worklist.Add(I);
           Worklist.AddUsersToWorkList(*I);
+          Worklist.Add(I);
         }
       }
       MadeIRChange = true;