diff options
author | Hongbin Zheng <etherzhhb@gmail.com> | 2017-10-15 07:31:02 +0000 |
---|---|---|
committer | Hongbin Zheng <etherzhhb@gmail.com> | 2017-10-15 07:31:02 +0000 |
commit | 73f650435b207b851d1d1ee62a9ccf63ecd9f7ba (patch) | |
tree | 8da21845086615d4178cdf68ecab2c9390481a77 /llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp | |
parent | a9cd59fb5d7461684f0cd1b55377c0b5863f06e8 (diff) | |
download | bcm5719-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.cpp | 30 |
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 |