[llvm][STLExtras] Move various iterator/range utilities from MLIR to LLVM
authorRiver Riddle <riddleriver@gmail.com>
Tue, 14 Apr 2020 21:53:07 +0000 (14:53 -0700)
committerRiver Riddle <riddleriver@gmail.com>
Tue, 14 Apr 2020 22:14:40 +0000 (15:14 -0700)
commit204c3b551626a925dfdc3822a6f240bdc8ef5d3a
tree2586b0ed4ba254677c19a4b3913614eeb15fdf38
parent8cbe371c28a30ca5b0775b095a754702e57aa7ea
[llvm][STLExtras] Move various iterator/range utilities from MLIR to LLVM

This revision moves the various range utilities present in MLIR to LLVM to enable greater reuse. This revision moves the following utilities:

* indexed_accessor_*
This is set of utility iterator/range base classes that allow for building a range class where the iterators are represented by an object+index pair.

* make_second_range
Given a range of pairs, returns a range iterating over the `second` elements.

* hasSingleElement
Returns if the given range has 1 element. size() == 1 checks end up being very common, but size() is not always O(1) (e.g., ilist). This method provides O(1) checks for those cases.

Differential Revision: https://reviews.llvm.org/D78064
24 files changed:
llvm/include/llvm/ADT/STLExtras.h
llvm/unittests/Support/CMakeLists.txt
llvm/unittests/Support/IndexedAccessorTest.cpp [moved from mlir/unittests/Support/IndexedAccessorTest.cpp with 92% similarity]
mlir/include/mlir/Dialect/SPIRV/SPIRVTypes.h
mlir/include/mlir/IR/Attributes.h
mlir/include/mlir/IR/BlockSupport.h
mlir/include/mlir/IR/OpImplementation.h
mlir/include/mlir/IR/OperationSupport.h
mlir/include/mlir/IR/Region.h
mlir/include/mlir/IR/UseDefLists.h
mlir/include/mlir/Support/STLExtras.h
mlir/lib/Dialect/Affine/IR/AffineOps.cpp
mlir/lib/Dialect/GPU/Transforms/MemoryPromotion.cpp
mlir/lib/Dialect/Linalg/Utils/Utils.cpp
mlir/lib/Dialect/SPIRV/SPIRVOps.cpp
mlir/lib/Dialect/StandardOps/IR/Ops.cpp
mlir/lib/IR/Attributes.cpp
mlir/lib/IR/Module.cpp
mlir/lib/IR/OperationSupport.cpp
mlir/lib/IR/Region.cpp
mlir/lib/IR/SymbolTable.cpp
mlir/lib/Transforms/Utils/LoopUtils.cpp
mlir/unittests/CMakeLists.txt
mlir/unittests/Support/CMakeLists.txt [deleted file]