On 28/02/17 06:38, Eyal Itkin wrote: > However, in signed integers, the logical meaning of any relation check > is only the theoretical meaning of the order relation between the > numbers in the group Z. Meaning that in a purely theoretical manner "a > + b < c" is a relation order that is equivalent to "a < c - b" or even > " 0 < c - b - a". The only exception here is about any possible > integer overflow (above MAX_INT) or underflow (below MIN_INT), however > such cases are specified to be undefined in the C standard, and should > not harm the possible efficiency of the code generation.
We can't change arithmetic which does not overflow into arithmetic which might. We re-order operations where we know that it's safe to do so, but this one does not look safe to me. Andrew.