diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-04-23 04:22:38 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-04-23 04:22:38 +0000 |
commit | d9bbdce7159d2c5dc123292b155aca53535e190d (patch) | |
tree | e8631ba67266d209c71ebc2ea73df138ea176752 /llvm/lib/Bitcode/Writer | |
parent | 4b1bc647f05341a959c6f6a433791d4ce62e7de4 (diff) | |
download | bcm5719-llvm-d9bbdce7159d2c5dc123292b155aca53535e190d.tar.gz bcm5719-llvm-d9bbdce7159d2c5dc123292b155aca53535e190d.zip |
ValueEnumerator: Use std::find_if, NFC
Mehdi's pattern recognition pulled this one out. This is cleaner with
std::find_if than with the strange helper function that took an iterator
by reference and updated it.
llvm-svn: 267271
Diffstat (limited to 'llvm/lib/Bitcode/Writer')
-rw-r--r-- | llvm/lib/Bitcode/Writer/ValueEnumerator.cpp | 21 | ||||
-rw-r--r-- | llvm/lib/Bitcode/Writer/ValueEnumerator.h | 10 |
2 files changed, 8 insertions, 23 deletions
diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp index 068bf622df1..4de0d261c57 100644 --- a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp +++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp @@ -575,11 +575,15 @@ void ValueEnumerator::EnumerateMetadata(unsigned F, const Metadata *MD) { while (!Worklist.empty()) { const MDNode *N = Worklist.back().first; - MDNode::op_iterator &I = Worklist.back().second; - // Enumerate operands until the worklist changes. We need to traverse new - // nodes before visiting the rest of N's operands. - if (const MDNode *Op = enumerateMetadataOperands(F, I, N->op_end())) { + // Enumerate operands until we hit a new node. We need to traverse these + // nodes' operands before visiting the rest of N's operands. + MDNode::op_iterator I = std::find_if( + Worklist.back().second, N->op_end(), + [&](const Metadata *MD) { return enumerateMetadataImpl(F, MD); }); + if (I != N->op_end()) { + auto *Op = cast<MDNode>(*I); + Worklist.back().second = ++I; Worklist.push_back(std::make_pair(Op, Op->op_begin())); continue; } @@ -591,15 +595,6 @@ void ValueEnumerator::EnumerateMetadata(unsigned F, const Metadata *MD) { } } -const MDNode * -ValueEnumerator::enumerateMetadataOperands(unsigned F, MDNode::op_iterator &I, - MDNode::op_iterator E) { - while (I != E) - if (const MDNode *N = enumerateMetadataImpl(F, *I++)) // Always increment I. - return N; - return nullptr; -} - const MDNode *ValueEnumerator::enumerateMetadataImpl(unsigned F, const Metadata *MD) { if (!MD) return nullptr; diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.h b/llvm/lib/Bitcode/Writer/ValueEnumerator.h index 9acb9224212..14407bed03f 100644 --- a/llvm/lib/Bitcode/Writer/ValueEnumerator.h +++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.h @@ -246,16 +246,6 @@ private: /// function. void incorporateFunctionMetadata(const Function &F); - /// Enumerate operands with the given function tag. - /// - /// Enumerate the Metadata operands between \c I and \c E, returning the - /// first newly-enumerated MDNode without assigning it an ID. - /// - /// \post If a node was found, \c I points just past the node. - /// \post If no node was found, \c I is equal to \c E. - const MDNode *enumerateMetadataOperands(unsigned F, const MDOperand *&I, - const MDOperand *E); - /// Enumerate a single instance of metadata with the given function tag. /// /// If \c MD has already been enumerated, check that \c F matches its |