New submission from deadshort :
Apple Radar ticket 9908625 has been filed. The clang 2.1 optimizer causes
overflows in Object/intobject.c:int_pow() to be missed, so 2**63 turns into a
negative integer. The attached test program narrows it down. llvm-gcc is fine,
so this ticket is mostly an
deadshort added the comment:
Blecch: cut-o.
The bad case should have been the matching:
idiotbox:Python-2.7.2 cloomis$ ./seqpoint 40 40
a=40, b=40, c(a*b)=-2446744073709551616, c/b=40
overflow detected: 0
deadshort added the comment:
Yup, that was it. Something new learnt. Thanks.
Not sure how to have configure spot that clang needs the flag. OK, the
configure stanza for gcc is hardly general; maybe trying $(CC) -fwrapv and
keeping the flag if that does not blow up on the pad? But I guess
deadshort added the comment:
Since this is still dribbling along I'll point out intobject.c:int_pow() and:
prev = ix; /* Save value for overflow check */
if (iw & 1) {
ix = ix*temp;
if (temp == 0)
break; /* Avo