On 25/07/2018 9:32 PM, Zheng (Vic) Luo wrote:
On Wednesday, 25 July 2018 at 09:16:19 UTC, rikki cattermole wrote:
On 25/07/2018 8:59 PM, Zheng (Vic) Luo wrote:
Minimal example in D: https://run.dlang.io/is/EYVTzb. Affects at least dmd and ldc.


https://run.dlang.io/is/8tPOVX

Note that switch void* to ubyte* won't matter once its extern(C)'d.

My version (_memcpy_impl2) is just the regular old memcpy without optimizations. Your example is syntax sugar for a function call.

A naive implementation of memset also lead to "call memset": https://run.dlang.io/is/k3Hl04

Okay yup, that is an optimization.

This won't optimize:

extern(C) void* memset(ubyte* dest, int val, size_t count) {
    immutable c = cast(ubyte)val;
    foreach(i; 0..count) {
        dest[i] = c;
    }
    return dest;
}

And yes the name is important :)

Reply via email to