From 59acfb12635b79fd83950eed10172cf43694b978 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 17 Jan 2025 12:53:25 -0800 Subject: [PATCH] compiler_rt: don't rely on weak aliases --- lib/compiler_rt/memcpy.zig | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/compiler_rt/memcpy.zig b/lib/compiler_rt/memcpy.zig index 2ef38927b0..614bcc7182 100644 --- a/lib/compiler_rt/memcpy.zig +++ b/lib/compiler_rt/memcpy.zig @@ -5,19 +5,23 @@ const builtin = @import("builtin"); comptime { if (builtin.object_format != .c) { @export(&memcpy, .{ .name = "memcpy", .linkage = common.linkage, .visibility = common.visibility }); - @export(&memcpy, .{ .name = "memmove", .linkage = common.linkage, .visibility = common.visibility }); + @export(&memmove, .{ .name = "memmove", .linkage = common.linkage, .visibility = common.visibility }); } } -// a port of https://github.com/facebook/folly/blob/1c8bc50e88804e2a7361a57cd9b551dd10f6c5fd/folly/memcpy.S -pub fn memcpy(maybe_dest: ?[*]u8, maybe_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 { +fn memcpy(noalias opt_dest: ?[*]u8, noalias opt_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 { + return memmove(opt_dest, opt_src, len); +} + +fn memmove(opt_dest: ?[*]u8, opt_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 { + // a port of https://github.com/facebook/folly/blob/1c8bc50e88804e2a7361a57cd9b551dd10f6c5fd/folly/memcpy.S if (len == 0) { @branchHint(.unlikely); - return maybe_dest; + return opt_dest; } - const dest = maybe_dest.?; - const src = maybe_src.?; + const dest = opt_dest.?; + const src = opt_src.?; if (len < 8) { @branchHint(.unlikely);