[dmd-beta] dmd 1.070 and 2.055 beta

Walter Bright walter at digitalmars.com
Tue Sep 6 13:45:25 PDT 2011



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 at __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 at __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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/dmd-beta/attachments/20110906/0a44bdff/attachment.html>


More information about the dmd-beta mailing list