On 06.09.2011 22:45, Walter Bright wrote:
On 9/6/2011 12:13 PM, Rainer Schuetze wrote:
I can reproduce the issue on Win7 64, but not on XP. I have debugged
it a little until I noticed that the generated code for TLS access
seems broken:
dmd 2.054 generated this code for the append operation
push 1
1000207D mov ecx,dword ptr [__tls_index (1006BF98h)]
10002083 mov edx,dword ptr fs:[2Ch]
1000208A mov ebx,dword ptr [edx+ecx*4]
1000208D lea esi,[ebx+4]
10002093 push esi
10002094 mov eax,offset TypeInfo_Ai@__init (1005E9A0h)
10002099 push eax
1000209A call __d_arrayappendcT (10004D68h)
while the beta generates
push 1
10002076 mov ecx,dword ptr fs:[2Ch]
1000207D mov edx,dword ptr [ecx]
1000207F lea ebx,[edx+4]
10002085 push ebx
10002086 mov esi,offset TypeInfo_Ai@__init (10067A90h)
1000208B push esi
1000208C call __d_arrayappendcT (10004F9Ch)
so it completely ignores the tls_index. I guess it works on XP
because there are less DLLs that use TLS, so the DLLs index ends up as 0.
Very interesting. Can you provide the source code for that?
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta
it seems to happen with any code:
int x;
int main()
{
return x;
}
generates
__Dmain comdat
assume CS:__Dmain
mov EAX,FS:__tls_array
mov ECX,[EAX]
mov EAX,_D1m1xi[ECX]
ret
__Dmain ends
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta