[Issue 9969] dmd ABI mistake (cfloat static array initialisation)
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Apr 21 04:34:00 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9969
Maxim Fomin <maxim at maxim-fomin.ru> changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|major |critical
--- Comment #6 from Maxim Fomin <maxim at maxim-fomin.ru> 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: -------
More information about the Digitalmars-d-bugs
mailing list