FW: RE: x86_64 port
David Brown
haskell at davidb.org
Mon Mar 7 12:15:01 EST 2005
On Mon, Mar 07, 2005 at 04:59:38PM -0000, Simon Marlow wrote:
> The mystery as to why this doesn't affect us on x86 is solved: on x86 we
> generate slightly different C code, including a dummy function call:
>
> extern void g(void);
> static void f(void) {
> R1 = g;
> dummy();
> goto *R1;
> }
>
> the call to dummy() (which we filter out from the assembly later) is
> enough to force gcc to emit the assignment to R1. That dummy function
> call has been there for ever, and the original reason for it has been
> lost in the mists of time... comments in the source code seemed to
> indicate that it was probably not necessary any more, so for x86_64 I
> removed it. It looks like I'll have to reinstate it to work around this
> bug, though.
gcc 3.3.4 on AMD64 appears to generate correct code when the dummy call is
present. Ick.
Dave
More information about the Glasgow-haskell-users
mailing list