On 2006-12-31 10:19:59 -0500, Richard Kenner wrote: > > If done in unsigned, this won't lead to any optimization, as unsigned > > arithmetic doesn't have overflows. So, if you write "a - 10" where a > > is unsigned, the compiler can't assume anything, whereas is a is > > signed, the compiler can assume that a >= INT_MIN + 10, reducing > > the range for a, and possibly allowing some optimizations. > > I don't follow. The purpose of this hand-optimization (whch is also done > by GCC) is to replace two comparisons with one subtraction and one > comparison, which is faster on most machines. It's not CORRECT to do this > transformation in signed unless you know there won't be overflow.
OK, I was assuming that the code were correct in signed arithmetic (meaning no overflow) and that the "a - 10" were done for another purpose (see my example in another message). -- Vincent Lefèvre <[EMAIL PROTECTED]> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)