aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-03-08 18:42:30 +0000
committergingerBill <bill@gingerbill.org>2020-03-08 18:42:30 +0000
commitd4e95282c2c0a48daea88dd752181eb862fab666 (patch)
tree9ae9a7c7382a0220a46f81fa2029c921f783d038
parent5a02ebe2c8caff530f51df97691554a74c97aba9 (diff)
Fix `llvm.memset` for both backends
-rw-r--r--core/runtime/internal.odin20
1 files changed, 15 insertions, 5 deletions
diff --git a/core/runtime/internal.odin b/core/runtime/internal.odin
index bcc91eb6b..2d4388bb2 100644
--- a/core/runtime/internal.odin
+++ b/core/runtime/internal.odin
@@ -40,12 +40,22 @@ mem_zero :: proc "contextless" (data: rawptr, len: int) -> rawptr {
if len < 0 do return data;
when !#defined(memset) {
foreign _ {
- when size_of(rawptr) == 8 {
- @(link_name="llvm.memset.p0i8.i64")
- memset :: proc(dst: rawptr, val: byte, len: int, is_volatile: bool = false) ---;
+ when ODIN_USE_LLVM_API {
+ when size_of(rawptr) == 8 {
+ @(link_name="llvm.memset.p0i8.i64")
+ memset :: proc(dst: rawptr, val: byte, len: int, is_volatile: bool = false) ---;
+ } else {
+ @(link_name="llvm.memset.p0i8.i32")
+ memset :: proc(dst: rawptr, val: byte, len: int, is_volatile: bool = false) ---;
+ }
} else {
- @(link_name="llvm.memset.p0i8.i32")
- memset :: proc(dst: rawptr, val: byte, len: int, is_volatile: bool = false) ---;
+ when size_of(rawptr) == 8 {
+ @(link_name="llvm.memset.p0i8.i64")
+ memset :: proc(dst: rawptr, val: byte, len: int, align: i32 = 1, is_volatile: bool = false) ---;
+ } else {
+ @(link_name="llvm.memset.p0i8.i32")
+ memset :: proc(dst: rawptr, val: byte, len: int, align: i32 = 1, is_volatile: bool = false) ---;
+ }
}
}
}