From 0f94c3c80dde666f369ef98057ac943e869c3d52 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Mon, 14 Jun 2021 16:25:59 +0300 Subject: [PATCH] [NFC][DAGCombine] Extract getFirstIndexOf() lambda back into a function Not all supported compilers like such lambdas, at least one buildbot is unhappy. --- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 20e80df..8731cdc 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -19266,6 +19266,15 @@ static SDValue reduceBuildVecToShuffleWithZero(SDNode *BV, SelectionDAG &DAG) { return DAG.getBitcast(VT, Shuf); } +// FIXME: promote to STLExtras. +template +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(); -- 2.7.4