From: Adam Nemet Date: Thu, 19 Feb 2015 19:15:13 +0000 (+0000) Subject: [LoopAccesses] Add missing const to APIs in VectorizationReport X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=7d39ae845d28ce36087b5b431e0f27960d2b8d19 [LoopAccesses] Add missing const to APIs in VectorizationReport When I split out LoopAccessReport from this, I need to create some temps so constness becomes necessary. This is part of the patchset that converts LoopAccessAnalysis into an actual analysis pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229896 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/LoopAccessAnalysis.h b/include/llvm/Analysis/LoopAccessAnalysis.h index 936783e53b0..91b572b6ae6 100644 --- a/include/llvm/Analysis/LoopAccessAnalysis.h +++ b/include/llvm/Analysis/LoopAccessAnalysis.h @@ -38,10 +38,10 @@ class SCEV; /// the user why vectorization did not occur. class VectorizationReport { std::string Message; - Instruction *Instr; + const Instruction *Instr; public: - VectorizationReport(Instruction *I = nullptr) + VectorizationReport(const Instruction *I = nullptr) : Message("loop not vectorized: "), Instr(I) {} template VectorizationReport &operator<<(const A &Value) { @@ -50,15 +50,16 @@ public: return *this; } - Instruction *getInstr() { return Instr; } + const Instruction *getInstr() const { return Instr; } std::string &str() { return Message; } + const std::string &str() const { return Message; } operator Twine() { return Message; } /// \brief Emit an analysis note for \p PassName with the debug location from /// the instruction in \p Message if available. Otherwise use the location of /// \p TheLoop. - static void emitAnalysis(VectorizationReport &Message, + static void emitAnalysis(const VectorizationReport &Message, const Function *TheFunction, const Loop *TheLoop, const char *PassName); diff --git a/lib/Analysis/LoopAccessAnalysis.cpp b/lib/Analysis/LoopAccessAnalysis.cpp index 40b70ef30d4..8588e611bc8 100644 --- a/lib/Analysis/LoopAccessAnalysis.cpp +++ b/lib/Analysis/LoopAccessAnalysis.cpp @@ -50,12 +50,12 @@ bool VectorizerParams::isInterleaveForced() { return ::VectorizationInterleave.getNumOccurrences() > 0; } -void VectorizationReport::emitAnalysis(VectorizationReport &Message, +void VectorizationReport::emitAnalysis(const VectorizationReport &Message, const Function *TheFunction, const Loop *TheLoop, const char *PassName) { DebugLoc DL = TheLoop->getStartLoc(); - if (Instruction *I = Message.getInstr()) + if (const Instruction *I = Message.getInstr()) DL = I->getDebugLoc(); emitOptimizationRemarkAnalysis(TheFunction->getContext(), PassName, *TheFunction, DL, Message.str()); diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp index 9ced65f13e1..e39375fa929 100644 --- a/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -815,7 +815,7 @@ private: /// Report an analysis message to assist the user in diagnosing loops that are /// not vectorized. - void emitAnalysis(VectorizationReport &Message) { + void emitAnalysis(const VectorizationReport &Message) { VectorizationReport::emitAnalysis(Message, TheFunction, TheLoop, LV_NAME); } @@ -952,7 +952,7 @@ private: /// Report an analysis message to assist the user in diagnosing loops that are /// not vectorized. - void emitAnalysis(VectorizationReport &Message) { + void emitAnalysis(const VectorizationReport &Message) { VectorizationReport::emitAnalysis(Message, TheFunction, TheLoop, LV_NAME); }