mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
* The langspec definition of `@memcpy` has been changed so that the source and destination element types must be in-memory coercible, allowing all such calls to be raw copying operations, not actually applying any coercions. * Implement aliasing check for comptime `@memcpy`; a compile error will now be emitted if the arguments alias. * Implement more efficient comptime `@memcpy` by loading and storing a whole array at once, similar to how `@memset` is implemented.
15 lines
290 B
Zig
15 lines
290 B
Zig
var arr: [10]u64 = undefined;
|
|
export fn foo() void {
|
|
@memcpy(arr[0..6], arr[4..10]);
|
|
}
|
|
|
|
comptime {
|
|
var types: [4]type = .{ u8, u16, u32, u64 };
|
|
@memcpy(types[2..4], types[1..3]);
|
|
}
|
|
|
|
// error
|
|
//
|
|
// :3:5: error: '@memcpy' arguments alias
|
|
// :8:5: error: '@memcpy' arguments alias
|