[llvm] r227748 - [LoopVectorize] Factor out duplicated code into Report::emitAnalysis
Adam Nemet
anemet at apple.com
Sun Feb 1 08:55:58 PST 2015
Author: anemet
Date: Sun Feb 1 10:55:58 2015
New Revision: 227748
URL: http://llvm.org/viewvc/llvm-project?rev=227748&view=rev
Log:
[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.
Modified:
llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
Modified: llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp?rev=227748&r1=227747&r2=227748&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp (original)
+++ llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp Sun Feb 1 10:55:58 2015
@@ -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(Instructio
}
}
+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.
More information about the llvm-commits
mailing list