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


Maxim Fomin <[email protected]> changed:

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


--- Comment #6 from Maxim Fomin <[email protected]> 2013-04-21 04:33:59 PDT 
---
(In reply to comment #5)
> I concede that there may well be a frontend problem as well, but in my limited
> experience a properly functioning backend should never emit the code we see
> here.

What backend generates isn't determined only by it, bugs in frontend may lead
to incorrect instructions. Look at:

extern(C) int printf(const char*, ... );

extern(C) long *_memset64(long *p, long value, size_t count);

void main()
{
    long[2] arr = void;
    _memset64(arr.ptr, 1, 2);
    printf("%d %d\n", arr[0], arr[1]);
    //cfloat[2] bug;
}

and _Dmain. In this case call to memset is constructed by CallExp and things
are done right, but in case of cfloat[2] call is constructed by AssignExp and
setArray
(https://github.com/D-Programming-Language/dmd/blob/master/src/e2ir.c#L757) and
invalid code is generated. 

Anyway, this is critical.

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

Reply via email to