ReleaseNotes: Document changes to ilist API
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Wed, 10 Feb 2016 19:20:23 +0000 (19:20 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Wed, 10 Feb 2016 19:20:23 +0000 (19:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@260415 91177308-0d34-0410-b5e6-96231b3b80d8

docs/ReleaseNotes.rst

index 2e41223f186705942a9625c11a21cd2bb6762fa9..622fc7a69f9e4913038bde4ba14d4e14639b84e6 100644 (file)
@@ -79,6 +79,21 @@ Non-comprehensive list of changes in this release
 
 * Support for dematerializing has been dropped.
 
 
 * Support for dematerializing has been dropped.
 
+* ``ilist_iterator<T>`` no longer has implicit conversions to and from ``T*``,
+  since ``ilist_iterator<T>`` may be pointing at the sentinel (which is usually
+  not of type ``T`` at all).  To convert from an iterator ``I`` to a pointer,
+  use ``&*I``; to convert from a pointer ``P`` to an iterator, use
+  ``P->getIterator()``.  Alternatively, explicit conversions via
+  ``static_cast<T>(U)`` are still available.
+
+* ``ilist_node<T>::getNextNode()`` and ``ilist_node<T>::getPrevNode()`` now
+  fail at compile time when the node cannot access its parent list.
+  Previously, when the sentinel was was an ``ilist_half_node<T>``, this API
+  could return the sentinal instead of ``nullptr``.  Frustrated callers should
+  be updated to use ``iplist<T>::getNextNode(T*)`` instead.  Alternatively, if
+  the node ``N`` is guaranteed not to be the last in the list, it is safe to
+  call ``&*++N->getIterator()`` directly.
+
 .. NOTE
    For small 1-3 sentence descriptions, just add an entry at the end of
    this list. If your description won't fit comfortably in one bullet
 .. NOTE
    For small 1-3 sentence descriptions, just add an entry at the end of
    this list. If your description won't fit comfortably in one bullet