[llvm-commits] [llvm] r48859 - /llvm/trunk/include/llvm/ADT/ilist

Daniel Berlin dberlin at dberlin.org
Wed Mar 26 22:12:15 PDT 2008


It has caught a few andersen's bugs that only occurred in release
mode, actually.

On Thu, Mar 27, 2008 at 1:01 AM, Nick Lewycky <nicholas at mxc.ca> wrote:
> Maybe we only need to do that in DEBUG mode?
>
>  Nick
>
>
>
>  Chris Lattner wrote:
>  > Author: lattner
>  > Date: Wed Mar 26 21:43:03 2008
>  > New Revision: 48859
>  >
>  > URL: http://llvm.org/viewvc/llvm-project?rev=48859&view=rev
>  > Log:
>  > when a node is removed from an ilist, set its next/prev pointers to
>  > null.  This means that uses of invalidated iterators will explode violently
>  > with:
>  > ilist:143: failed assertion `NodePtr && "++'d off the end of an ilist!"'
>  >
>  > instead of happening to work "most of the time".
>  >
>  >
>  > Modified:
>  >     llvm/trunk/include/llvm/ADT/ilist
>  >
>  > Modified: llvm/trunk/include/llvm/ADT/ilist
>  > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ilist?rev=48859&r1=48858&r2=48859&view=diff
>  >
>  > ==============================================================================
>  > --- llvm/trunk/include/llvm/ADT/ilist (original)
>  > +++ llvm/trunk/include/llvm/ADT/ilist Wed Mar 26 21:43:03 2008
>  > @@ -356,6 +356,14 @@
>  >      setPrev(NextNode, PrevNode);
>  >      IT = NextNode;
>  >      removeNodeFromList(Node);  // Notify traits that we removed a node...
>  > +
>  > +    // Set the next/prev pointers of the current node to null.  This isn't
>  > +    // strictly required, but this catches errors where a node is removed from
>  > +    // an ilist (and potentially deleted) with iterators still pointing at it.
>  > +    // When those iterators are incremented or decremented, they will assert on
>  > +    // the null next/prev pointer instead of "usually working".
>  > +    setNext(Node, 0);
>  > +    setPrev(Node, 0);
>  >      return Node;
>  >    }
>  >
>  >
>  >
>  > _______________________________________________
>  > llvm-commits mailing list
>  > llvm-commits at cs.uiuc.edu
>  > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>  >
>
>  _______________________________________________
>  llvm-commits mailing list
>  llvm-commits at cs.uiuc.edu
>  http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



More information about the llvm-commits mailing list