https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67999
--- Comment #24 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- I suppose that while EXACT_DIV_EXPR on the individual halves of a subtraction wouldn't be correct, it would also be correct (given any constant element size) to do the (right shift, multiply by reciprocal of odd part) combination, that works for exact division without needing a multiplication high part, on each pointer, because the subtraction would cancel out the matching errors from the two pointers not being divisible by the size of the type.