mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-21 05:05:00 -07:00
Add intrinsics.mem_zero
This commit is contained in:
+14
-2
@@ -9478,8 +9478,6 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv,
|
||||
case BuiltinProc_mem_copy:
|
||||
case BuiltinProc_mem_copy_non_overlapping:
|
||||
{
|
||||
|
||||
|
||||
lbValue dst = lb_build_expr(p, ce->args[0]);
|
||||
lbValue src = lb_build_expr(p, ce->args[1]);
|
||||
lbValue len = lb_build_expr(p, ce->args[2]);
|
||||
@@ -9513,6 +9511,20 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv,
|
||||
return {};
|
||||
}
|
||||
|
||||
case BuiltinProc_mem_zero:
|
||||
{
|
||||
lbValue ptr = lb_build_expr(p, ce->args[0]);
|
||||
lbValue len = lb_build_expr(p, ce->args[1]);
|
||||
ptr = lb_emit_conv(p, ptr, t_rawptr);
|
||||
len = lb_emit_conv(p, len, t_int);
|
||||
|
||||
LLVMTypeRef type_i8 = LLVMInt8TypeInContext(p->module->ctx);
|
||||
unsigned alignment = 1;
|
||||
LLVMBuildMemSet(p->builder, ptr.value, LLVMConstNull(type_i8), len.value, alignment);
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
|
||||
case BuiltinProc_atomic_fence:
|
||||
LLVMBuildFence(p->builder, LLVMAtomicOrderingSequentiallyConsistent, false, "");
|
||||
|
||||
Reference in New Issue
Block a user