Can't implement conformant memset/memcpy without compiler -ffreestanding support

Zheng Luo (Vic) vicluo96 at gmail.com
Wed Jul 25 09:23:15 UTC 2018


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.

There is no guarantee that a compiler (in a future version or 
after enabling some optimization flags) will not optimize 
_memcpy_impl2 into "call memset". Maybe it just happens that the 
optimizer is not smart enough to optimize this, because nothing 
with -beeterC prohibits the compiler to do so.


More information about the Digitalmars-d mailing list