mirror of
https://github.com/ziglang/zig.git
synced 2025-12-29 01:23:17 +00:00
Revert "work around llvm failing to lower memcpy"
This reverts commit acf70439551fc3f49b2d292ff93ee519901cdf42. Fixed as of ec768b7fa2f9c7dea6b92651bef59a7eea3299f2.
This commit is contained in:
parent
9758371419
commit
515c97065a
@ -9,36 +9,12 @@ comptime {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const llvm_cannot_lower = switch (builtin.cpu.arch) {
|
|
||||||
.arm, .armeb, .thumb, .thumbeb => builtin.zig_backend == .stage2_llvm,
|
|
||||||
else => false,
|
|
||||||
};
|
|
||||||
|
|
||||||
fn memcpy(noalias opt_dest: ?[*]u8, noalias opt_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 {
|
fn memcpy(noalias opt_dest: ?[*]u8, noalias opt_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 {
|
||||||
if (llvm_cannot_lower) {
|
return memmove(opt_dest, opt_src, len);
|
||||||
for (0..len) |i| opt_dest.?[i] = opt_src.?[i];
|
|
||||||
return opt_dest;
|
|
||||||
} else {
|
|
||||||
return memmove(opt_dest, opt_src, len);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A port of https://github.com/facebook/folly/blob/1c8bc50e88804e2a7361a57cd9b551dd10f6c5fd/folly/memcpy.S
|
|
||||||
fn memmove(opt_dest: ?[*]u8, opt_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 {
|
fn memmove(opt_dest: ?[*]u8, opt_src: ?[*]const u8, len: usize) callconv(.C) ?[*]u8 {
|
||||||
if (llvm_cannot_lower) {
|
// a port of https://github.com/facebook/folly/blob/1c8bc50e88804e2a7361a57cd9b551dd10f6c5fd/folly/memcpy.S
|
||||||
if (@intFromPtr(opt_dest) < @intFromPtr(opt_src)) {
|
|
||||||
for (0..len) |i| opt_dest.?[i] = opt_src.?[i];
|
|
||||||
return opt_dest;
|
|
||||||
} else {
|
|
||||||
var index = len;
|
|
||||||
while (index != 0) {
|
|
||||||
index -= 1;
|
|
||||||
opt_dest.?[index] = opt_src.?[index];
|
|
||||||
}
|
|
||||||
return opt_dest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
@branchHint(.unlikely);
|
@branchHint(.unlikely);
|
||||||
return opt_dest;
|
return opt_dest;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user