From 8a6de7df33904a6eb06171c64f1f7dbad5022499 Mon Sep 17 00:00:00 2001 From: Helge Bahmann Date: Sat, 20 Sep 2025 13:52:29 +0200 Subject: [PATCH] boost::intrusive_list --- jlm/rvsdg/node.cpp | 8 ++++---- jlm/rvsdg/node.hpp | 14 +++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/jlm/rvsdg/node.cpp b/jlm/rvsdg/node.cpp index 1d2c70ea8..95f950683 100644 --- a/jlm/rvsdg/node.cpp +++ b/jlm/rvsdg/node.cpp @@ -39,7 +39,7 @@ Input::Input(rvsdg::Node & owner, rvsdg::Output & origin, std::shared_ptrorigin_ == this); user->origin_ = nullptr; - Users_.erase(user); + Users_.erase(Users_.iterator_to(*user)); NumUsers_ -= 1; if (auto node = TryGetOwnerNode(*this)) @@ -208,7 +208,7 @@ Output::add_user(jlm::rvsdg::Input * user) } } - Users_.push_back(user); + Users_.push_back(*user); NumUsers_ += 1; } diff --git a/jlm/rvsdg/node.hpp b/jlm/rvsdg/node.hpp index 6dc2d5c8e..ccff87642 100644 --- a/jlm/rvsdg/node.hpp +++ b/jlm/rvsdg/node.hpp @@ -18,6 +18,8 @@ #include #include +#include + namespace jlm::rvsdg { @@ -223,9 +225,11 @@ class Input jlm::rvsdg::Output * origin_ = nullptr; std::variant Owner_; std::shared_ptr Type_; - jlm::util::IntrusiveListAnchor UsersList_; - using UsersListAccessor = jlm::util::intrusive_list_accessor; - using UsersList = jlm::util::IntrusiveList; + boost::intrusive::list_member_hook<> UsersListAnchor_; + using UsersList = boost::intrusive::list< + Input, + boost::intrusive:: + member_hook, &Input::UsersListAnchor_>>; friend class Output; }; @@ -249,8 +253,8 @@ class Output public: using UsersList = Input::UsersList; - using UsersRange = jlm::util::IteratorRange; - using UsersConstRange = jlm::util::IteratorRange; + using UsersRange = jlm::util::IteratorRange; + using UsersConstRange = jlm::util::IteratorRange; virtual ~Output() noexcept;