summaryrefslogtreecommitdiff
path: root/lib/Transforms/Scalar/LoopRotation.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2014-04-15 09:37:30 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2014-04-15 09:37:30 +0000
commit15cbb64eb4bb19e3b21e1c75af3096bced18eb2a (patch)
tree9c850430cd3a54474c5db76350e83ae87baf9b46 /lib/Transforms/Scalar/LoopRotation.cpp
parent47b284ce3539ef216e0ab994f4b7d762cfb1c69a (diff)
downloadllvm-15cbb64eb4bb19e3b21e1c75af3096bced18eb2a.tar.gz
llvm-15cbb64eb4bb19e3b21e1c75af3096bced18eb2a.tar.bz2
llvm-15cbb64eb4bb19e3b21e1c75af3096bced18eb2a.tar.xz
D3348 - [BUG] "Rotate Loop" pass kills "llvm.vectorizer.enable" metadata
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206266 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/LoopRotation.cpp')
-rw-r--r--lib/Transforms/Scalar/LoopRotation.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/LoopRotation.cpp b/lib/Transforms/Scalar/LoopRotation.cpp
index fde6bacb49..f0c9d5229b 100644
--- a/lib/Transforms/Scalar/LoopRotation.cpp
+++ b/lib/Transforms/Scalar/LoopRotation.cpp
@@ -82,6 +82,9 @@ bool LoopRotate::runOnLoop(Loop *L, LPPassManager &LPM) {
if (skipOptnoneFunction(L))
return false;
+ // Save the loop metadata.
+ MDNode *LoopMD = L->getLoopID();
+
LI = &getAnalysis<LoopInfo>();
TTI = &getAnalysis<TargetTransformInfo>();
@@ -96,6 +99,12 @@ bool LoopRotate::runOnLoop(Loop *L, LPPassManager &LPM) {
MadeChange = true;
SimplifiedLatch = false;
}
+
+ // Restore the loop metadata.
+ // NB! We presume LoopRotation DOESN'T ADD its own metadata.
+ if ((MadeChange || SimplifiedLatch) && LoopMD)
+ L->setLoopID(LoopMD);
+
return MadeChange;
}