mirror of https://github.com/python/cpython
SF patch 730594: assert from longobject.c, line 1215.
Some version of gcc in the "RTEMS port running on the Coldfire (m5200) processor" generates bad code for a loop in long_from_binary_base(), comparing the wrong half of an int to a short. The patch changes the decl of the short temp to be an int temp instead. This "simplifies" the code enough that gcc no longer blows it.
This commit is contained in:
parent
ce6829ade0
commit
c7bc0b98e7
|
@ -1201,8 +1201,8 @@ long_from_binary_base(char **str, int base)
|
|||
bits_in_accum = 0;
|
||||
pdigit = z->ob_digit;
|
||||
while (--p >= start) {
|
||||
unsigned char ch = (unsigned char)*p;
|
||||
digit k;
|
||||
int k;
|
||||
char ch = *p;
|
||||
|
||||
if (ch <= '9')
|
||||
k = ch - '0';
|
||||
|
@ -1212,8 +1212,8 @@ long_from_binary_base(char **str, int base)
|
|||
assert(ch >= 'A');
|
||||
k = ch - 'A' + 10;
|
||||
}
|
||||
assert(k < base);
|
||||
accum |= k << bits_in_accum;
|
||||
assert(k >= 0 && k < base);
|
||||
accum |= (twodigits)(k << bits_in_accum);
|
||||
bits_in_accum += bits_per_char;
|
||||
if (bits_in_accum >= SHIFT) {
|
||||
*pdigit++ = (digit)(accum & MASK);
|
||||
|
|
Loading…
Reference in New Issue