[llvm] remove Sequence::asSmallVector()
authorGuillaume Chatelet <gchatelet@google.com>
Mon, 14 Jun 2021 08:27:41 +0000 (08:27 +0000)
committerGuillaume Chatelet <gchatelet@google.com>
Mon, 14 Jun 2021 08:28:05 +0000 (08:28 +0000)
There's no need for `toSmallVector()` as `SmallVector.h` already provides a `to_vector` free function that takes a range.

Reviewed By: Quuxplusone

Differential Revision: https://reviews.llvm.org/D104024

llvm/include/llvm/ADT/Sequence.h
mlir/lib/Conversion/PDLToPDLInterp/PDLToPDLInterp.cpp
mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp

index 44e46a4..d033c01 100644 (file)
@@ -15,8 +15,6 @@
 #ifndef LLVM_ADT_SEQUENCE_H
 #define LLVM_ADT_SEQUENCE_H
 
-#include "llvm/ADT/SmallVector.h"
-
 #include <cstddef>  //std::ptrdiff_t
 #include <iterator> //std::random_access_iterator_tag
 
@@ -167,8 +165,6 @@ template <typename ValueT> struct iota_range {
   auto rbegin() const { return const_reverse_iterator(End - 1); }
   auto rend() const { return const_reverse_iterator(Begin - 1); }
 
-  auto asSmallVector() const { return SmallVector<ValueT>(begin(), end()); }
-
 private:
   static_assert(std::is_same<ValueT, std::remove_cv_t<ValueT>>::value,
                 "ValueT must not be const nor volatile");
index 402c89f..0ea5119 100644 (file)
@@ -15,7 +15,9 @@
 #include "mlir/Pass/Pass.h"
 #include "llvm/ADT/MapVector.h"
 #include "llvm/ADT/ScopedHashTable.h"
+#include "llvm/ADT/Sequence.h"
 #include "llvm/ADT/SetVector.h"
+#include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/TypeSwitch.h"
 
 using namespace mlir;
@@ -380,9 +382,8 @@ void PatternLowering::generateSwitch(SwitchNode *switchNode,
   if (kind == Predicates::OperandCountAtLeastQuestion ||
       kind == Predicates::ResultCountAtLeastQuestion) {
     // Order the children such that the cases are in reverse numerical order.
-    SmallVector<unsigned> sortedChildren =
-        llvm::seq<unsigned>(0, switchNode->getChildren().size())
-            .asSmallVector();
+    SmallVector<unsigned> sortedChildren = llvm::to_vector<16>(
+        llvm::seq<unsigned>(0, switchNode->getChildren().size()));
     llvm::sort(sortedChildren, [&](unsigned lhs, unsigned rhs) {
       return cast<UnsignedAnswer>(switchNode->getChild(lhs).first)->getValue() >
              cast<UnsignedAnswer>(switchNode->getChild(rhs).first)->getValue();
index 96846bf..f7d2192 100644 (file)
@@ -24,6 +24,8 @@
 #include "mlir/Support/LLVM.h"
 #include "mlir/Transforms/RegionUtils.h"
 #include "llvm/ADT/ScopeExit.h"
+#include "llvm/ADT/Sequence.h"
+#include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/TypeSwitch.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/raw_ostream.h"
@@ -303,7 +305,7 @@ static VectorizationResult vectorizeLinalgIndex(OpBuilder &b, Operation *op,
   auto targetShape = linalgOp.computeStaticLoopSizes();
   // Compute a one-dimensional index vector for the index op dimension.
   SmallVector<int64_t> constantSeq =
-      llvm::seq<int64_t>(0, targetShape[indexOp.dim()]).asSmallVector();
+      llvm::to_vector<16>(llvm::seq<int64_t>(0, targetShape[indexOp.dim()]));
   ConstantOp constantOp =
       b.create<ConstantOp>(loc, b.getIndexVectorAttr(constantSeq));
   // Return the one-dimensional index vector if it lives in the trailing
@@ -318,7 +320,7 @@ static VectorizationResult vectorizeLinalgIndex(OpBuilder &b, Operation *op,
   auto broadCastOp = b.create<vector::BroadcastOp>(
       loc, VectorType::get(targetShape, b.getIndexType()), constantOp);
   SmallVector<int64_t> transposition =
-      llvm::seq<int64_t>(0, linalgOp.getNumLoops()).asSmallVector();
+      llvm::to_vector<16>(llvm::seq<int64_t>(0, linalgOp.getNumLoops()));
   std::swap(transposition.back(), transposition[indexOp.dim()]);
   auto transposeOp =
       b.create<vector::TransposeOp>(loc, broadCastOp, transposition);