summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2015-02-13 03:49:41 +0000
committerChandler Carruth <chandlerc@gmail.com>2015-02-13 03:49:41 +0000
commit17a0496b5a3eca683a144180ad60c9310325b3db (patch)
tree65b23703aaefdd20a2de5565850caa3fcf565d07 /llvm/lib/Transforms/Scalar
parent8c86375a10fb569709f2fc3ef1d58d3eac221d74 (diff)
downloadbcm5719-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.cpp21
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;
OpenPOWER on IntegriCloud