Thanks Peter. That helped. I'm not certain but I think it was where I had
put hostinfo egg from chicken 4 into a subdir and was including it. There
is a .h file in hostinfo and I didn't catch the error message. Presumably
that somehow put the compiler into fixnum mode. Now on to the next porting
challenge :)



On Tue, Apr 6, 2021 at 11:20 PM Peter Bex <pe...@more-magic.net> wrote:

> On Tue, Apr 06, 2021 at 09:37:32PM -0700, Matt Welland wrote:
> > This one I sort of understand but it does seem annoying:
> >
> > Warning: coerced inexact literal number `9e+99' to fixnum
> >
> 8999999999999999948859130765266355329578537025198862586562510896759102769772101980841694466750283776
>
> I don't get this, unless I use -fixnum-arithmetic.  The message
> is a bit misleading because that number is (obviously) not a fixnum.
> However, if I compile it and I get that warning, it errors out with
>
>   Error: [internal compiler error] bad immediate (prepare)
>
> This makes sense because that's not a fixnum.  Maybe something we
> could "fix" by making the number overflow, or something.
>
> > but the following I don't understand:
> >
> > This line:
> > (define megatest-version 1.6584)
> >
> > generates this warning:
> > Warning: literal is out of range - will be truncated to integer: 1.6584
>
> I don't get that unless I compile with -fixnum-arithmetic.
>
> > But a small test program works fine:
> >
> > $ cat testit.scm
> > (module testit
> > *
> > (import scheme)
> > (define abc 1.2345)
> > )
> >
> > (import testit)
> > (print (/ abc 2))
> > $ csc testit.scm
> > $ ./testit
> > 0.61725
>
> If I compile that as "csc -fixnum-arithmetic testit.scm" I get the
> same warning and it prints zero.  If I compile it without flags,
> I get the expected output, like you.
>
> Cheers,
> Peter
>


-- 
--
Complexity is your enemy. Any fool can make something complicated.
It is hard to keep things simple. - Richard Branson.

Reply via email to