[PATCH] D72127: [mlir] Fix indexed_accessor_range to properly forward the derived class.
River Riddle via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 2 21:59:31 PST 2020
rriddle created this revision.
rriddle added a reviewer: jpienaar.
Herald added subscribers: llvm-commits, lucyrfox, mgester, arpith-jacob, nicolasvasilache, antiagainst, shauheen, burmako, mehdi_amini, arphaman.
Herald added a project: LLVM.
This fixes the return value of helper methods on the base range class.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D72127
Files:
mlir/include/mlir/IR/OperationSupport.h
mlir/include/mlir/Support/STLExtras.h
mlir/lib/IR/OperationSupport.cpp
Index: mlir/lib/IR/OperationSupport.cpp
===================================================================
--- mlir/lib/IR/OperationSupport.cpp
+++ mlir/lib/IR/OperationSupport.cpp
@@ -152,8 +152,8 @@
ResultRange::ResultRange(Operation *op)
: ResultRange(op, /*startIndex=*/0, op->getNumResults()) {}
-/// See `detail::indexed_accessor_range_base` for details.
-OpResult ResultRange::dereference_iterator(Operation *op, ptrdiff_t index) {
+/// See `indexed_accessor_range` for details.
+OpResult ResultRange::dereference(Operation *op, ptrdiff_t index) {
return op->getResult(index);
}
Index: mlir/include/mlir/Support/STLExtras.h
===================================================================
--- mlir/include/mlir/Support/STLExtras.h
+++ mlir/include/mlir/Support/STLExtras.h
@@ -286,18 +286,16 @@
/// bases that are offsetable should derive from indexed_accessor_range_base
/// instead. Derived range classes are expected to implement the following
/// static method:
-/// * ReferenceT dereference_iterator(const BaseT &base, ptrdiff_t index)
+/// * ReferenceT dereference(const BaseT &base, ptrdiff_t index)
/// - Derefence an iterator pointing to a parent base at the given index.
template <typename DerivedT, typename BaseT, typename T,
typename PointerT = T *, typename ReferenceT = T &>
class indexed_accessor_range
: public detail::indexed_accessor_range_base<
- indexed_accessor_range<DerivedT, BaseT, T, PointerT, ReferenceT>,
- std::pair<BaseT, ptrdiff_t>, T, PointerT, ReferenceT> {
+ DerivedT, std::pair<BaseT, ptrdiff_t>, T, PointerT, ReferenceT> {
public:
using detail::indexed_accessor_range_base<
- indexed_accessor_range<DerivedT, BaseT, T, PointerT, ReferenceT>,
- std::pair<BaseT, ptrdiff_t>, T, PointerT,
+ DerivedT, std::pair<BaseT, ptrdiff_t>, T, PointerT,
ReferenceT>::indexed_accessor_range_base;
/// Returns the current base of the range.
@@ -306,14 +304,6 @@
/// Returns the current start index of the range.
ptrdiff_t getStartIndex() const { return this->base.second; }
-protected:
- indexed_accessor_range(BaseT base, ptrdiff_t startIndex, ptrdiff_t count)
- : detail::indexed_accessor_range_base<
- indexed_accessor_range<DerivedT, BaseT, T, PointerT, ReferenceT>,
- std::pair<BaseT, ptrdiff_t>, T, PointerT, ReferenceT>(
- std::make_pair(base, startIndex), count) {}
-
-private:
/// See `detail::indexed_accessor_range_base` for details.
static std::pair<BaseT, ptrdiff_t>
offset_base(const std::pair<BaseT, ptrdiff_t> &base, ptrdiff_t index) {
@@ -325,13 +315,14 @@
static ReferenceT
dereference_iterator(const std::pair<BaseT, ptrdiff_t> &base,
ptrdiff_t index) {
- return DerivedT::dereference_iterator(base.first, base.second + index);
+ return DerivedT::dereference(base.first, base.second + index);
}
- /// Allow access to `offset_base` and `dereference_iterator`.
- friend detail::indexed_accessor_range_base<
- indexed_accessor_range<DerivedT, BaseT, T, PointerT, ReferenceT>,
- std::pair<BaseT, ptrdiff_t>, T, PointerT, ReferenceT>;
+protected:
+ indexed_accessor_range(BaseT base, ptrdiff_t startIndex, ptrdiff_t count)
+ : detail::indexed_accessor_range_base<
+ DerivedT, std::pair<BaseT, ptrdiff_t>, T, PointerT, ReferenceT>(
+ std::make_pair(base, startIndex), count) {}
};
/// Given a container of pairs, return a range over the second elements.
Index: mlir/include/mlir/IR/OperationSupport.h
===================================================================
--- mlir/include/mlir/IR/OperationSupport.h
+++ mlir/include/mlir/IR/OperationSupport.h
@@ -598,8 +598,8 @@
iterator_range<type_iterator> getTypes() const { return {begin(), end()}; }
private:
- /// See `detail::indexed_accessor_range_base` for details.
- static OpResult dereference_iterator(Operation *op, ptrdiff_t index);
+ /// See `indexed_accessor_range` for details.
+ static OpResult dereference(Operation *op, ptrdiff_t index);
/// Allow access to `dereference_iterator`.
friend indexed_accessor_range<ResultRange, Operation *, OpResult, OpResult,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72127.235992.patch
Type: text/x-patch
Size: 4231 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200103/7f24228a/attachment.bin>
More information about the llvm-commits
mailing list