forked from OSchip/llvm-project
[NFC][DAGCombine] Extract getFirstIndexOf() lambda back into a function
Not all supported compilers like such lambdas, at least one buildbot is unhappy.
This commit is contained in:
parent
6e5628354e
commit
0f94c3c80d
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue