mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-01 23:30:40 -08:00
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:
parent
491f242fa4
commit
9210270227
2 changed files with 16 additions and 12 deletions
14
src/aclocal.m4
vendored
14
src/aclocal.m4
vendored
|
|
@ -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
14
src/configure
vendored
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue