[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Libjit-developers] Register allocation bug
From: |
Rhys Weatherley |
Subject: |
Re: [Libjit-developers] Register allocation bug |
Date: |
Sun, 31 Oct 2004 11:32:43 +1000 |
User-agent: |
KMail/1.4.3 |
On Sunday 31 October 2004 11:03 am, Evin Robertson wrote:
> The program at the end of this email segfaults with libjit 0.0.4 using
> the x86 back-end.
>
> The problem appears to be with register allocation.
>
> The second to last line of procedure run is miscompiled. It generates
> a series of codes like:
>
> 40200206: b9 c8 23 06 08 mov $0x80623c8,%ecx
> 4020020b: 8b 4d e4 mov 0xffffffe4(%ebp),%ecx
> 4020020e: 89 09 mov %ecx,(%ecx)
>
> It loads the address of a global into ecx, then loads the value of the
> local variable into ecx as well. It attempts the write, but the
> destination address has been overwritten.
>
> I don't understand the register allocation stuff well enough to repair
> the bug myself.
Fixed in CVS now. It was something weird to do with constants as destination
pointers.
Cheers,
Rhys.