[llvm] r282728 - [LV] Split most of createMissedAnalysis into a static function. NFC

Adam Nemet via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 29 10:05:36 PDT 2016


Author: anemet
Date: Thu Sep 29 12:05:35 2016
New Revision: 282728

URL: http://llvm.org/viewvc/llvm-project?rev=282728&view=rev
Log:
[LV] Split most of createMissedAnalysis into a static function. NFC

This will be shared between Legality and CostModel.

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=282728&r1=282727&r2=282728&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp (original)
+++ llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp Thu Sep 29 12:05:35 2016
@@ -239,6 +239,32 @@ static bool hasCyclesInLoopBody(const Lo
   return false;
 }
 
+/// Create an analysis remark that explains why vectorization failed
+///
+/// \p PassName is the name of the pass (e.g. can be AlwaysPrint).  \p
+/// RemarkName is the identifier for the remark.  If \p I is passed it is an
+/// instruction that prevents vectorization.  Otherwise \p TheLoop is used for
+/// the location of the remark.  \return the remark object that can be
+/// streamed to.
+static OptimizationRemarkAnalysis
+createMissedAnalysis(const char *PassName, StringRef RemarkName, Loop *TheLoop,
+                     Instruction *I = nullptr) {
+  Value *CodeRegion = TheLoop->getHeader();
+  DebugLoc DL = TheLoop->getStartLoc();
+
+  if (I) {
+    CodeRegion = I->getParent();
+    // If there is no debug location attached to the instruction, revert back to
+    // using the loop's.
+    if (I->getDebugLoc())
+      DL = I->getDebugLoc();
+  }
+
+  OptimizationRemarkAnalysis R(PassName, RemarkName, DL, CodeRegion);
+  R << "loop not vectorized: ";
+  return R;
+}
+
 /// \brief This modifies LoopAccessReport to initialize message with
 /// loop-vectorizer-specific part.
 class VectorizationReport : public LoopAccessReport {
@@ -1706,21 +1732,8 @@ private:
   /// streamed to.
   OptimizationRemarkAnalysis
   createMissedAnalysis(StringRef RemarkName, Instruction *I = nullptr) const {
-    Value *CodeRegion = TheLoop->getHeader();
-    DebugLoc DL = TheLoop->getStartLoc();
-
-    if (I) {
-      CodeRegion = I->getParent();
-      // If there is no debug location attached to the instruction, revert back
-      // to using the loop's.
-      if (I->getDebugLoc())
-        DL = I->getDebugLoc();
-    }
-
-    OptimizationRemarkAnalysis R(Hints->vectorizeAnalysisPassName(), RemarkName,
-                                 DL, CodeRegion);
-    R << "loop not vectorized: ";
-    return R;
+    return ::createMissedAnalysis(Hints->vectorizeAnalysisPassName(),
+                                  RemarkName, TheLoop, I);
   }
 
   /// \brief If an access has a symbolic strides, this maps the pointer value to




More information about the llvm-commits mailing list