From 2640fd5bae01dfdb7d07178c0a71cdbf8a519db6 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Fri, 13 Feb 2015 04:06:08 +0000 Subject: [PATCH] [unroll] Replace a linear time check for no uses with a constant time check. Also hoist this into the enqueue process as it is faster even than testing the worklist set, we should just directly filter these out much like we filter out constants and such. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229056 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/LoopUnrollPass.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/Transforms/Scalar/LoopUnrollPass.cpp b/lib/Transforms/Scalar/LoopUnrollPass.cpp index d1daaa684ad..37851ba87da 100644 --- a/lib/Transforms/Scalar/LoopUnrollPass.cpp +++ b/lib/Transforms/Scalar/LoopUnrollPass.cpp @@ -519,7 +519,8 @@ public: auto EnqueueOperands = [&](Instruction &I) { for (auto *Op : I.operand_values()) if (auto *OpI = dyn_cast(Op)) - Worklist.insert(OpI); + if (!OpI->use_empty()) + Worklist.insert(OpI); }; // Start by initializing worklist with simplified instructions. @@ -541,8 +542,6 @@ public: continue; if (DeadInstructions.count(I)) continue; - if (I->getNumUses() == 0) - continue; bool AllUsersFolded = true; for (User *U : I->users()) { Instruction *UI = dyn_cast(U); -- 2.34.1