https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109008
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So, can't we say compute what we compute right now for the reverse operation and then call some helper function which will try to extended that range a little bit in both directions by performing frange_arithmetic (or variant thereof) on the original operation and checking if the other op's range OP the slightly extended range still yields the result range? Of course it would be better if we knew how to exactly compute that rather than try to iteratively guess, but even iterative guess could say punt after a few iterations on smallest range extension which would already result in a different range. Though, I bet reverse multiplication/division are even harder because there we perform the reverse operation of all the boundaries against each other and union.