[Issue 9969] dmd ABI mistake (cfloat static array initialisation)

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Nov 3 04:41:41 UTC 2019


https://issues.dlang.org/show_bug.cgi?id=9969

Nicholas Wilson <iamthewilsonator at hotmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |iamthewilsonator at hotmail.co
                   |                            |m
         Resolution|---                         |WORKSFORME

--- Comment #7 from Nicholas Wilson <iamthewilsonator at hotmail.com> ---
extern(C) int printf(const char*, ... );

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

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

works on current as does

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

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

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

as does 

void main()
{
    cfloat[2] a;
}

--


More information about the Digitalmars-d-bugs mailing list