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 :)