diff options
| author | Adam Nemet <anemet@apple.com> | 2015-02-01 16:55:58 +0000 |
|---|---|---|
| committer | Adam Nemet <anemet@apple.com> | 2015-02-01 16:55:58 +0000 |
| commit | ac71cecdc6750afdb2846ecb51b74a5aec43586b (patch) | |
| tree | 58d8eb091ae82299aed418e7b373fcb2cf15dce2 /llvm | |
| parent | 6854b9203af882b721341affb3a3c9cf47a87b9f (diff) | |
| download | bcm5719-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.cpp | 26 |
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. |

