From d4e95282c2c0a48daea88dd752181eb862fab666 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 8 Mar 2020 18:42:30 +0000 Subject: [PATCH] Fix `llvm.memset` for both backends --- core/runtime/internal.odin | 20 +++++++++++++++----- 1 file 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) ---; + } } } }