summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2015-02-01 16:55:58 +0000
committerAdam Nemet <anemet@apple.com>2015-02-01 16:55:58 +0000
commitac71cecdc6750afdb2846ecb51b74a5aec43586b (patch)
tree58d8eb091ae82299aed418e7b373fcb2cf15dce2 /llvm
parent6854b9203af882b721341affb3a3c9cf47a87b9f (diff)
downloadbcm5719-llvm-ac71cecdc6750afdb2846ecb51b74a5aec43586b.tar.gz
bcm5719-llvm-ac71cecdc6750afdb2846ecb51b74a5aec43586b.zip
[LoopVectorize] Factor out duplicated code into Report::emitAnalysis
The logic in emitAnalysis is duplicated across multiple functions. This splits it into a function. Another use will be added by the patchset. NFC. This is part of the patchset that splits out the memory dependence logic from LoopVectorizationLegality into a new class LoopAccessAnalysis. LoopAccessAnalysis will be used by the new Loop Distribution pass. llvm-svn: 227748
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Transforms/Vectorize/LoopVectorize.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index 68d057d43f8..1d671930c2e 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -239,6 +239,11 @@ public:
std::string &str() { return Out.str(); }
operator Twine() { return Out.str(); }
+
+ /// \brief Emit an analysis note with the debug location from the instruction
+ /// in \p Message if available. Otherwise use the location of \p TheLoop.
+ static void emitAnalysis(Report &Message, const Function *TheFunction,
+ const Loop *TheLoop);
};
/// InnerLoopVectorizer vectorizes loops which contain only one basic
@@ -551,6 +556,15 @@ static void propagateMetadata(Instruction *To, const Instruction *From) {
}
}
+void Report::emitAnalysis(Report &Message, const Function *TheFunction,
+ const Loop *TheLoop) {
+ DebugLoc DL = TheLoop->getStartLoc();
+ if (Instruction *I = Message.getInstr())
+ DL = I->getDebugLoc();
+ emitOptimizationRemarkAnalysis(TheFunction->getContext(), DEBUG_TYPE,
+ *TheFunction, DL, Message.str());
+}
+
/// \brief Propagate known metadata from one instruction to a vector of others.
static void propagateMetadata(SmallVectorImpl<Value *> &To, const Instruction *From) {
for (Value *V : To)
@@ -889,11 +903,7 @@ private:
/// Report an analysis message to assist the user in diagnosing loops that are
/// not vectorized.
void emitAnalysis(Report &Message) {
- DebugLoc DL = TheLoop->getStartLoc();
- if (Instruction *I = Message.getInstr())
- DL = I->getDebugLoc();
- emitOptimizationRemarkAnalysis(TheFunction->getContext(), DEBUG_TYPE,
- *TheFunction, DL, Message.str());
+ Report::emitAnalysis(Message, TheFunction, TheLoop);
}
/// The loop that we evaluate.
@@ -1029,11 +1039,7 @@ private:
/// Report an analysis message to assist the user in diagnosing loops that are
/// not vectorized.
void emitAnalysis(Report &Message) {
- DebugLoc DL = TheLoop->getStartLoc();
- if (Instruction *I = Message.getInstr())
- DL = I->getDebugLoc();
- emitOptimizationRemarkAnalysis(TheFunction->getContext(), DEBUG_TYPE,
- *TheFunction, DL, Message.str());
+ Report::emitAnalysis(Message, TheFunction, TheLoop);
}
/// Values used only by @llvm.assume calls.
OpenPOWER on IntegriCloud