On Tue, 7 Feb 2017, Jeff Law wrote:
* tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR, if the numerator has the range ~[0,0] make the resultant range ~[0,0].
If I understand correctly, for x /[ex] 4 with x!=0, we currently split ~[0,0] into [INT_MIN,-1] and [1,INT_MAX], then apply EXACT_DIV_EXPR which gives [INT_MIN/4,-1] and [1,INT_MAX/4], and finally compute the union of those, which prefers [INT_MIN/4,INT_MAX/4] over ~[0,0]. We could change the union function, but this patch prefers changing the code elsewhere so that the new behavior is restricted to the EXACT_DIV_EXPR case (and supposedly the patch will be reverted if we get a new non-contiguous version of ranges, where union would already work). Is that it?
-- Marc Glisse