summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
diff options
context:
space:
mode:
authorMichael Kruse <llvm@meinersbur.de>2018-12-04 21:06:16 +0000
committerMichael Kruse <llvm@meinersbur.de>2018-12-04 21:06:16 +0000
commite6899bf0027d85b44cab48de1c07b434952a4444 (patch)
tree99115409e6ad542b49bb88bfa4ecba262500e221 /llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
parent24fb29658962d16552a917e9eb74bdca2884d259 (diff)
downloadbcm5719-llvm-e6899bf0027d85b44cab48de1c07b434952a4444.tar.gz
bcm5719-llvm-e6899bf0027d85b44cab48de1c07b434952a4444.zip
[ADT] Add zip_longest iterators
Like the already existing zip_shortest/zip_first iterators, zip_longest iterates over multiple iterators at once, but has as many iterations as the longest sequence. This means some iterators may reach the end before others do. zip_longest uses llvm::Optional's None value to mark a past-the-end value. zip_longest is not reverse-iteratable because the tuples iterated over would be different for different length sequences (IMHO for the same reason neither zip_shortest nor zip_first should be reverse-iteratable; one can still reverse the ranges individually if that's the expected behavior). In contrast to zip_shortest/zip_first, zip_longest tuples contain rvalues instead of references. This is because llvm::Optional cannot contain reference types and the value-initialized default does not have a memory location a reference could point to. The motivation for these iterators is to use C++ foreach to compare two lists of ordered attributes in D48100 (SemaOverload.cpp and ASTReaderDecl.cpp). Idea by @hfinkel. Differential Revision: https://reviews.llvm.org/D48348 llvm-svn: 348301
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud