On 07 March 2005 16:18, David Brown wrote: > 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.
Yes, looks like it fails with 3.4.1 and 3.4.3 I have here, but 3.2.2 works. Now I'm quite surpised that this hasn't affected us on x86. Very strange. Cheers, Simon _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users