[clang] [llvm] [mlir] [IRBuilder] Remove custom insertion point type (PR #228117)
Antonio Frighetto via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 2 01:02:58 PDT 2026
================
@@ -65,6 +65,9 @@ class iterator_parent_access<IteratorTy, ParentTy, true> {
template <class IteratorTy, class ParentTy>
class iterator_parent_access<IteratorTy, ParentTy, false> {
public:
+ inline const ParentTy *getNodeParent() const {
+ return static_cast<const IteratorTy *>(this)->NodePtr->getParent();
+ }
----------------
antoniofrighetto wrote:
Not sure if we perhaps copied this from the specialization above, but, there `IsConst = true` (a const_iterator) is what justifies returning a `const ParentTy *`, whereas, here, only the iterator object is const, so returning a non-const `ParentTy *` should suffice (consistently with `operator*() const` returning a non-const reference). You could therefore drop all the `const_cast<BasicBlock *>` in OMPIRBuilder.h.
Thinking more on the const_iterator overload, I think there is a bug as `this` should have type `const iterator_parent_access *`, but then we cast it to `IteratorTy *` dropping const, which I don't think should be legal (not sure how this compiles though).
IListIteratorTest.cpp might use a bit of testing for this new overload (and perhaps the one above too).
https://github.com/llvm/llvm-project/pull/228117
More information about the cfe-commits
mailing list