[PATCH] Debug SelectionDAG & SDUse

I need a review of this patch and if it looks sane, someone to apply it to
their local sources and run tests in Debug+Checks mode.

The patch replaces the intrusive SDUse list with a std::list<> when XDEBUG is
active. I believe I've maintained the semantics of the SDUse list but I need
a double-check.

The patch exposes all kinds of problems in Debug+Checks mode. Right
now most of them appear to be caused by either garbled data or assigning
an SDUse to multiple SDNode use lists. I don't know what the root cause of
the asserts is right now.

In our copy of 2.5, we get asserts about referencing singular iterators in
ReplaceAllUsesWith. The problem appears to be the recursive call deleting
SDUses out from under the iterators. I have not got that far on trunk due to
the other assert failures.

Three things that I'd like to request:

1. Someone to review that I've correctly made the data structure change.

2. Someone to apply the patch to their local tree and run a Debug+Checks test.

3. Someone to review the patch for commit. I think having XDEBUG-style checks
    on SelectionDAG is extremely valuable. I've been working this bug for two
    weeks and only nailed it down with this patch.


sdxdebug.patch (7.53 KB)