Yes, exactly. Since overflow cannot happen (sic!), its equivalent. I have not seen this problem with gcc, I am building with clang currently.
On Sun, 6 Jan 2013, Henrik Grubbstr�m (Lysator) @ Pike (-) developers forum wrote:
-NUMBER [(-$1a) > 0] : NEG_NUMBER (-$1a) -NEG_NUMBER [(-$1a) >= 0] : NUMBER (-$1a) +NUMBER [ !INT32_NEG_OVERFLOW($1a) && (-$1a) > 0] : NEG_NUMBER (-$1a) +NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) && (-$1a) >= 0] : NUMBER (-$1a)
Hmm, the above changes hints that the problem is caused by a more aggressive C-compiler, that transcribes
(-X) > 0 and (-X) >= 0
with
X <= 0 and X < 0
which are usually equvivalent, except for X == MIN_INT.