Fix dialect conversion ConversionPatternRewriter::cancelRootUpdate: the
erasure of operations here from the list of root update was off by one.
Should have been:
rootUpdates.erase(rootUpdates.begin() + (rootUpdates.rend() - it - 1));
instead of
rootUpdates.erase(rootUpdates.begin() + (rootUpdates.rend() - it));
or more directly:
rootUpdates.erase(it.base() -1)
While on this, add an assertion to improve dev experience when a cancel is
called on an op on which a root update hasn't been started.
This formula is confusing me. And std::prev(rootUpdates.rend()) even more so. How is it different from begin()?