diff --git a/lib/compiler_rt/udivmodei4.zig b/lib/compiler_rt/udivmodei4.zig index 1a18612015..354a926b81 100644 --- a/lib/compiler_rt/udivmodei4.zig +++ b/lib/compiler_rt/udivmodei4.zig @@ -29,8 +29,8 @@ inline fn limb_set(x: []u32, i: usize, v: u32) void { // Uses Knuth's Algorithm D, 4.3.1, p. 272. fn divmod(q: ?[]u32, r: ?[]u32, u: []const u32, v: []const u32) !void { - if (q) |q_| std.mem.set(u32, q_[0..], 0); - if (r) |r_| std.mem.set(u32, r_[0..], 0); + if (q) |q_| @memset(q_[0..], 0); + if (r) |r_| @memset(r_[0..], 0); if (u.len == 0 or v.len == 0) return error.DivisionByZero; @@ -44,7 +44,7 @@ fn divmod(q: ?[]u32, r: ?[]u32, u: []const u32, v: []const u32) !void { } if (n > m) { - if (r) |r_| std.mem.copy(u32, r_[0..], u[0..]); + if (r) |r_| @memcpy(r_[0..u.len], u); return; } diff --git a/lib/std/mem.zig b/lib/std/mem.zig index 5dae48d059..557e39cdfc 100644 --- a/lib/std/mem.zig +++ b/lib/std/mem.zig @@ -192,7 +192,8 @@ test "Allocator.resize" { } } -/// Deprecated: use `copyForwards` +/// Deprecated: use `@memcpy` if the arguments do not overlap, or +/// `copyForwards` if they do. pub const copy = copyForwards; /// Copy all of source into dest at position 0. @@ -218,11 +219,7 @@ pub fn copyBackwards(comptime T: type, dest: []T, source: []const T) void { } } -/// Sets all elements of `dest` to `value`. -pub fn set(comptime T: type, dest: []T, value: T) void { - for (dest) |*d| - d.* = value; -} +pub const set = @compileError("deprecated; use @memset instead"); /// Generally, Zig users are encouraged to explicitly initialize all fields of a struct explicitly rather than using this function. /// However, it is recognized that there are sometimes use cases for initializing all fields to a "zero" value. For example, when @@ -251,7 +248,7 @@ pub fn zeroes(comptime T: type) T { if (@sizeOf(T) == 0) return undefined; if (struct_info.layout == .Extern) { var item: T = undefined; - set(u8, asBytes(&item), 0); + @memset(asBytes(&item), 0); return item; } else { var structure: T = undefined; @@ -1669,9 +1666,9 @@ pub fn writeIntSliceLittle(comptime T: type, buffer: []u8, value: T) void { assert(buffer.len >= @divExact(@typeInfo(T).Int.bits, 8)); if (@typeInfo(T).Int.bits == 0) { - return set(u8, buffer, 0); + return @memset(buffer, 0); } else if (@typeInfo(T).Int.bits == 8) { - set(u8, buffer, 0); + @memset(buffer, 0); buffer[0] = @bitCast(u8, value); return; } @@ -1693,9 +1690,9 @@ pub fn writeIntSliceBig(comptime T: type, buffer: []u8, value: T) void { assert(buffer.len >= @divExact(@typeInfo(T).Int.bits, 8)); if (@typeInfo(T).Int.bits == 0) { - return set(u8, buffer, 0); + return @memset(buffer, 0); } else if (@typeInfo(T).Int.bits == 8) { - set(u8, buffer, 0); + @memset(buffer, 0); buffer[buffer.len - 1] = @bitCast(u8, value); return; } @@ -2708,7 +2705,7 @@ fn testReadIntImpl() !void { } } -test "writeIntSlice" { +test writeIntSlice { try testWriteIntImpl(); comptime try testWriteIntImpl(); }