FW: RE: x86_64 port
David Brown
haskell at davidb.org
Mon Mar 7 11:17:53 EST 2005
On Mon, Mar 07, 2005 at 11:47:31AM -0000, Simon Marlow wrote:
> $ cat bug.c
> register void * R1 __asm__("%r13");
>
> extern void g(void);
> static void f(void) {
> R1 = g;
> goto *R1;
> }
> $ gcc -S -O bug.c
> $
>
> And take a look at the generated assembly for the function f:
>
> f:
> .LFB2:
> movl $g, %eax
> jmp *%rax
>
> Note that the assignment to the global variable R1 has been lost. It
> works fine on x86 though: change the register variable to %esi and try
> it.
Hmm. On gcc 3.3.5 that I have, it discards the assignment on x86 as well.
Dave
More information about the Glasgow-haskell-users
mailing list