diff options
| author | Chandler Carruth <chandlerc@gmail.com> | 2015-02-13 03:49:41 +0000 |
|---|---|---|
| committer | Chandler Carruth <chandlerc@gmail.com> | 2015-02-13 03:49:41 +0000 |
| commit | 17a0496b5a3eca683a144180ad60c9310325b3db (patch) | |
| tree | 65b23703aaefdd20a2de5565850caa3fcf565d07 /llvm/lib/Transforms/Scalar | |
| parent | 8c86375a10fb569709f2fc3ef1d58d3eac221d74 (diff) | |
| download | bcm5719-llvm-17a0496b5a3eca683a144180ad60c9310325b3db.tar.gz bcm5719-llvm-17a0496b5a3eca683a144180ad60c9310325b3db.zip | |
[unroll] Extract the code to enqueue operansd for the worklist in the
unroll analysis into a lambda and call it. That's much simpler than
duplicating all the code.
llvm-svn: 229053
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp index e4771dbc89b..63d3cc6f628 100644 --- a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp +++ b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp @@ -509,6 +509,15 @@ public: // worklist. SmallPtrSet<Instruction *, 4> OperandSet; + // Lambda to enque operands onto the worklist. + auto EnqueueOperands = [&](Instruction &I) { + OperandSet.clear(); + for (auto *Op : I.operand_values()) + if (auto *OpI = dyn_cast<Instruction>(Op)) + if (OperandSet.insert(OpI).second) + Worklist.push_back(OpI); + }; + // Start by initializing worklist with simplified instructions. for (auto &FoldedKeyValue : SimplifiedValues) if (auto *FoldedInst = dyn_cast<Instruction>(FoldedKeyValue.first)) { @@ -516,11 +525,7 @@ public: // Add each instruction operand of this dead instruction to the // worklist. - OperandSet.clear(); - for (auto *Op : FoldedInst->operand_values()) - if (auto *OpI = dyn_cast<Instruction>(Op)) - if (OperandSet.insert(OpI).second) - Worklist.push_back(OpI); + EnqueueOperands(*FoldedInst); } // If a definition of an insn is only used by simplified or dead @@ -545,11 +550,7 @@ public: if (AllUsersFolded) { NumberOfOptimizedInstructions += TTI.getUserCost(I); DeadInstructions.insert(I); - OperandSet.clear(); - for (auto *Op : I->operand_values()) - if (auto *OpI = dyn_cast<Instruction>(Op)) - if (OperandSet.insert(OpI).second) - Worklist.push_back(OpI); + EnqueueOperands(*I); } } return NumberOfOptimizedInstructions; |

