summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar
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
commitb97f9e86982b068fd7ca5f35c812599562a74182 (patch)
tree94f5b1af16c52e5f8d7ed2c8084bc30f44bf758c /llvm/lib/Transforms/Scalar
parentbf4e0f86c9d17dcfaceb827a1eba1e43adb613b6 (diff)
downloadbcm5719-llvm-b97f9e86982b068fd7ca5f35c812599562a74182.tar.gz
bcm5719-llvm-b97f9e86982b068fd7ca5f35c812599562a74182.zip
D3348 - [BUG] "Rotate Loop" pass kills "llvm.vectorizer.enable" metadata
llvm-svn: 206266
Diffstat (limited to 'llvm/lib/Transforms/Scalar')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopRotation.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopRotation.cpp b/llvm/lib/Transforms/Scalar/LoopRotation.cpp
index fde6bacb492..f0c9d5229be 100644
--- a/llvm/lib/Transforms/Scalar/LoopRotation.cpp
+++ b/llvm/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;
}
OpenPOWER on IntegriCloud