[NFC][DAGCombine] Extract getFirstIndexOf() lambda back into a function
authorRoman Lebedev <lebedev.ri@gmail.com>
Mon, 14 Jun 2021 13:25:59 +0000 (16:25 +0300)
committerRoman Lebedev <lebedev.ri@gmail.com>
Mon, 14 Jun 2021 13:25:59 +0000 (16:25 +0300)
Not all supported compilers like such lambdas, at least one buildbot is unhappy.

llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index 20e80df..8731cdc 100644 (file)
@@ -19266,6 +19266,15 @@ static SDValue reduceBuildVecToShuffleWithZero(SDNode *BV, SelectionDAG &DAG) {
   return DAG.getBitcast(VT, Shuf);
 }
 
+// FIXME: promote to STLExtras.
+template <typename R, typename T>
+static auto getFirstIndexOf(R &&Range, const T &Val) {
+  auto I = find(Range, Val);
+  if (I == Range.end())
+    return -1L;
+  return std::distance(Range.begin(), I);
+}
+
 // Check to see if this is a BUILD_VECTOR of a bunch of EXTRACT_VECTOR_ELT
 // operations. If the types of the vectors we're extracting from allow it,
 // turn this into a vector_shuffle node.
@@ -19273,14 +19282,6 @@ SDValue DAGCombiner::reduceBuildVecToShuffle(SDNode *N) {
   SDLoc DL(N);
   EVT VT = N->getValueType(0);
 
-  // FIXME: promote to STLExtras.
-  auto getFirstIndexOf = [](auto &&Range, const auto &Val) {
-    auto I = find(Range, Val);
-    if (I == Range.end())
-      return -1L;
-    return std::distance(Range.begin(), I);
-  };
-
   // Only type-legal BUILD_VECTOR nodes are converted to shuffle nodes.
   if (!isTypeLegal(VT))
     return SDValue();