From c6c6c56ba997a5150462ec5d6cada973888b42c4 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 8 Mar 2020 18:44:45 +0000 Subject: [PATCH] Fix `mem.set` for LLVM C API --- core/mem/mem.odin | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/core/mem/mem.odin b/core/mem/mem.odin index a2a6510dc..f753a579d 100644 --- a/core/mem/mem.odin +++ b/core/mem/mem.odin @@ -13,16 +13,26 @@ swap :: proc{swap16, swap32, swap64}; set :: proc "contextless" (data: rawptr, value: byte, len: int) -> rawptr { foreign _ { - when size_of(rawptr) == 8 { - @(link_name="llvm.memset.p0i8.i64") - llvm_memset :: proc(dst: rawptr, val: byte, len: int, is_volatile: bool) ---; + 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") - llvm_memset :: proc(dst: rawptr, val: byte, len: int, is_volatile: bool) ---; + 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) ---; + } } } - llvm_memset(data, value, len, false); + memset(data, value, len); return data; } zero :: inline proc "contextless" (data: rawptr, len: int) -> rawptr {