In ECL_FIXNUM_TYPE, the C code outputs one less bit than there really

are. Furthermore, it fails to produce the right limits for the integers.
This commit is contained in:
jjgarcia 2002-12-09 13:08:11 +00:00
parent 491f242fa4
commit 9210270227
2 changed files with 16 additions and 12 deletions

14
src/aclocal.m4 vendored
View file

@ -208,17 +208,19 @@ int main() {
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
if (sizeof(int) >= sizeof(void*)) {
unsigned int t = 1, l;
unsigned int t = 1;
signed int l = 0;
int_type="int";
for (bits=0; ((t << 1) >> 1) == t; bits++, t <<= 1);
l = (~0) << (bits - 2);
for (bits=1; ((t << 1) >> 1) == t; bits++, t <<= 1);
l = (~l) << (bits - 3);
fprintf(f,"CL_FIXNUM_MIN='%d';",l);
fprintf(f,"CL_FIXNUM_MAX='%d';",-(l+1));
} else if (sizeof(long) >= sizeof(void*)) {
unsigned long int t = 1, l;
unsigned long int t = 1;
signed long int l = 0;
int_type="long int";
for (bits=0; ((t << 1) >> 1) == t; bits++, t <<= 1);
l = (~0) << (bits - 2);
for (bits=1; ((t << 1) >> 1) == t; bits++, t <<= 1);
l = (~l) << (bits - 3);
fprintf(f,"CL_FIXNUM_MIN='%ld';",l);
fprintf(f,"CL_FIXNUM_MAX='%ld';",-(l+1));
} else

14
src/configure vendored
View file

@ -4199,17 +4199,19 @@ int main() {
FILE *f=fopen("conftestval", "w");
if (!f) exit(1);
if (sizeof(int) >= sizeof(void*)) {
unsigned int t = 1, l;
unsigned int t = 1;
signed int l = 0;
int_type="int";
for (bits=0; ((t << 1) >> 1) == t; bits++, t <<= 1);
l = (~0) << (bits - 2);
for (bits=1; ((t << 1) >> 1) == t; bits++, t <<= 1);
l = (~l) << (bits - 3);
fprintf(f,"CL_FIXNUM_MIN='%d';",l);
fprintf(f,"CL_FIXNUM_MAX='%d';",-(l+1));
} else if (sizeof(long) >= sizeof(void*)) {
unsigned long int t = 1, l;
unsigned long int t = 1;
signed long int l = 0;
int_type="long int";
for (bits=0; ((t << 1) >> 1) == t; bits++, t <<= 1);
l = (~0) << (bits - 2);
for (bits=1; ((t << 1) >> 1) == t; bits++, t <<= 1);
l = (~l) << (bits - 3);
fprintf(f,"CL_FIXNUM_MIN='%ld';",l);
fprintf(f,"CL_FIXNUM_MAX='%ld';",-(l+1));
} else