[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