authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-01-17 12:53:25-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-01-17 12:53:25-08:00
log59acfb12635b79fd83950eed10172cf43694b978
tree5d7be7b4c21f9d967081e1c832a169cd1791f4d6
parentf278038923c33ddf710f0328a07ce18613a94130

compiler_rt: don't rely on weak aliases


1 files changed, 10 insertions(+), 6 deletions(-)

lib/compiler_rt/memcpy.zig+10-6
......@@ -5,19 +5,23 @@ const builtin = @import("builtin");
55comptime {
66 if (builtin.object_format != .c) {
77 @export(&memcpy, .{ .name = "memcpy", .linkage = common.linkage, .visibility = common.visibility });
8 @export(&memcpy, .{ .name = "memmove", .linkage = common.linkage, .visibility = common.visibility });
8 @export(&memmove, .{ .name = "memmove", .linkage = common.linkage, .visibility = common.visibility });
99 }
1010}
1111
12// a port of https://github.com/facebook/folly/blob/1c8bc50e88804e2a7361a57cd9b551dd10f6c5fd/folly/memcpy.S
13pub fn memcpy(maybe_dest: ?[*]u8, maybe_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 {
12fn memcpy(noalias opt_dest: ?[*]u8, noalias opt_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 {
13 return memmove(opt_dest, opt_src, len);
14}
15
16fn memmove(opt_dest: ?[*]u8, opt_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 {
17 // a port of https://github.com/facebook/folly/blob/1c8bc50e88804e2a7361a57cd9b551dd10f6c5fd/folly/memcpy.S
1418 if (len == 0) {
1519 @branchHint(.unlikely);
16 return maybe_dest;
20 return opt_dest;
1721 }
1822
19 const dest = maybe_dest.?;
20 const src = maybe_src.?;
23 const dest = opt_dest.?;
24 const src = opt_src.?;
2125
2226 if (len < 8) {
2327 @branchHint(.unlikely);