struct IRInstructionDataList
Declaration
struct IRInstructionDataList : public simple_ilist { /* full declaration omitted */ };
Description
A simple intrusive list implementation. This is a simple intrusive list for a \c T that inherits from \c ilist_node<T>. The list never takes ownership of anything inserted in it. Unlike \a iplist<T> and \a ilist<T>, \a simple_ilist<T> never deletes values, and has no callback traits. The API for adding nodes include \a push_front(), \a push_back(), and \a insert(). These all take values by reference (not by pointer), except for the range version of \a insert(). There are three sets of API for discarding nodes from the list: \a remove(), which takes a reference to the node to remove, \a erase(), which takes an iterator or iterator range and returns the next one, and \a clear(), which empties out the container. All three are constant time operations. None of these deletes any nodes; in particular, if there is a single node in the list, then these have identical semantics: As a convenience for callers, there are parallel APIs that take a \c Disposer (such as \c std::default_delete<T>): \a removeAndDispose(), \a eraseAndDispose(), and \a clearAndDispose(). These have different names because the extra semantic is otherwise non-obvious. They are equivalent to calling \a std::for_each() on the range to be discarded. The currently available \p Options customize the nodes in the list. The same options must be specified in the \a ilist_node instantiation for compatibility (although the order is irrelevant). Here are examples of \p Options usage: See \a is_valid_option for steps on adding a new option.
Declared at: llvm/include/llvm/Analysis/IRSimilarityIdentifier.h:297
Inherits from: simple_ilist