================
@@ -44,6 +44,23 @@ template <> struct ilist_alloc_traits<Instruction> {
iterator_range<simple_ilist<DbgRecord>::iterator>
getDbgRecordRange(DbgMarker *);
+class InsertPosition {
+ using InstListType = SymbolTableList<Instruction, ilist_iterator_bits<true>,
+ ilist_parent<BasicBlock>>;
+ InstListType::iterator InsertAt;
+
+public:
+ InsertPosition(std::nullopt_t) : InsertAt() {}
+ InsertPosition(std::nullptr_t) : InsertAt() {}
+ // LLVM_DEPRECATED("Use BasicBlock::iterators for insertion instead",
+ // "BasicBlock::iterator")
+ InsertPosition(Instruction *InsertBefore);
+ InsertPosition(BasicBlock *InsertAtEnd);
+ InsertPosition(InstListType::iterator InsertAt) : InsertAt(InsertAt) {}
+ operator InstListType::iterator() const { return InsertAt; }
+ bool IsValid() const { return InsertAt.getNodePtr(); }
----------------
nikic wrote:
I think you added an isValid() method to the iterator itself?
https://github.com/llvm/llvm-project/pull/94226
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits