summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
diff options
context:
space:
mode:
authorHongbin Zheng <etherzhhb@gmail.com>2017-10-15 07:31:02 +0000
committerHongbin Zheng <etherzhhb@gmail.com>2017-10-15 07:31:02 +0000
commit73f650435b207b851d1d1ee62a9ccf63ecd9f7ba (patch)
tree8da21845086615d4178cdf68ecab2c9390481a77 /llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
parenta9cd59fb5d7461684f0cd1b55377c0b5863f06e8 (diff)
downloadbcm5719-llvm-73f650435b207b851d1d1ee62a9ccf63ecd9f7ba.tar.gz
bcm5719-llvm-73f650435b207b851d1d1ee62a9ccf63ecd9f7ba.zip
[LoopInfo][Refactor] Make SetLoopAlreadyUnrolled a member function of the Loop Pass, NFC.
This avoid code duplication and allow us to add the disable unroll metadata elsewhere. Differential Revision: https://reviews.llvm.org/D38928 llvm-svn: 315850
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp30
1 files changed, 1 insertions, 29 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
index 1ff3811e236..9114120bd2b 100644
--- a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
+++ b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
@@ -401,35 +401,7 @@ CloneLoopBlocks(Loop *L, Value *NewIter, const bool CreateRemainderLoop,
return NewLoop;
// Add unroll disable metadata to disable future unrolling for this loop.
- SmallVector<Metadata *, 4> MDs;
- // Reserve first location for self reference to the LoopID metadata node.
- MDs.push_back(nullptr);
- MDNode *LoopID = NewLoop->getLoopID();
- if (LoopID) {
- // First remove any existing loop unrolling metadata.
- for (unsigned i = 1, ie = LoopID->getNumOperands(); i < ie; ++i) {
- bool IsUnrollMetadata = false;
- MDNode *MD = dyn_cast<MDNode>(LoopID->getOperand(i));
- if (MD) {
- const MDString *S = dyn_cast<MDString>(MD->getOperand(0));
- IsUnrollMetadata = S && S->getString().startswith("llvm.loop.unroll.");
- }
- if (!IsUnrollMetadata)
- MDs.push_back(LoopID->getOperand(i));
- }
- }
-
- LLVMContext &Context = NewLoop->getHeader()->getContext();
- SmallVector<Metadata *, 1> DisableOperands;
- DisableOperands.push_back(MDString::get(Context,
- "llvm.loop.unroll.disable"));
- MDNode *DisableNode = MDNode::get(Context, DisableOperands);
- MDs.push_back(DisableNode);
-
- MDNode *NewLoopID = MDNode::get(Context, MDs);
- // Set operand 0 to refer to the loop id itself.
- NewLoopID->replaceOperandWith(0, NewLoopID);
- NewLoop->setLoopID(NewLoopID);
+ NewLoop->setLoopAlreadyUnrolled();
return NewLoop;
}
else
OpenPOWER on IntegriCloud