Real.maxFinite bug
Matthew Fluet
fluet@CS.Cornell.EDU
Wed, 3 Oct 2001 18:09:44 -0400 (EDT)
> Wouldn't it be easier to just have some assembler file (with the .o in
> libmlton.a) which has the real maxFinite in it? I'm worried that the way
> you describe PackReal.fromBytes is always going to be in the final executable.
Only if it's not culled by the unused basis removal.
But, I agree with you about the .o file. I was originally trying to do it
in real.c.
Now, it's trivial to do the following in real.c:
long long const maxPos = 0xF..F;
Then do, in the Real structure of primitives.sml,
val maxPos = _ffi "Real_maxPos": real;
And then in the Real structure of real.sml
val maxPos = Primitive.maxPos
(I think the second assignment will allow the value to be fetched once as
a global during initGlobals, rather than each time.)
If it is fetched once, then I guess we will be fine. My previous
hesitation was that maxPos in real.c doesn't get aligned mod 8. Nate (my
officemate) and I spent some quality time with Kernighan and Ritchie
trying to figure out how to initalize a union, in the vain hope that:
typedef union {long long l; double d;} ldd;
lld const maxPos = {0xF..F};
would get the right alignment; but gcc doesn't do it right.