http://d.puremagic.com/issues/show_bug.cgi?id=5591


hypothermia.fr...@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|major                       |critical


--- Comment #2 from hypothermia.fr...@gmail.com 2011-02-16 12:10:39 PST ---
After disassembly I found out that this code was generated(no -O switch):
//asm { mov EBX,3; } bar(4);
mov     ebx, 3
push    4
mov     ebx, large fs:2Ch
mov     esi, [ebx]
call    dword ptr [esi+4F4h]
mov     [ebp+var_20], ebx

//the next round ecx is used...
//asm { mov EBX,5; } bar(6);
mov     ebx, 5
push    6
mov     ecx, large fs:2Ch
mov     edx, [ecx]
call    dword ptr [edx+4F4h]
mov     [ebp+var_20], ebx

Why is DMD not preserving the EBX register in the first call? The worst thing
is that the compiler doesn't even know tha there's something in EBX... This
problem happened to me with when EBX had a this pointer and then DMD didn't
save it and after the function pointer call I got an exception!

I think this is a serious issue and should be looked at ASAP.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to