aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
diff options
context:
space:
mode:
authorYawning Angel <yawning@schwanenlied.me>2021-10-31 21:37:22 +0000
committerYawning Angel <yawning@schwanenlied.me>2021-10-31 21:37:22 +0000
commit796a0c3968243f540e68e584283d862f60bf3f26 (patch)
treedf9a40bfc381d96410901dfaa33786c7556f361e /src/llvm_backend_proc.cpp
parentff36bd3d8589bb9f86b1ce2caef17c1e9cb54b81 (diff)
core/intrinsics: Add mem_zero_volatile
Diffstat (limited to 'src/llvm_backend_proc.cpp')
-rw-r--r--src/llvm_backend_proc.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 29f7b6655..e1edfcac7 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -1560,7 +1560,18 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv,
len = lb_emit_conv(p, len, t_int);
unsigned alignment = 1;
- lb_mem_zero_ptr_internal(p, ptr.value, len.value, alignment);
+ lb_mem_zero_ptr_internal(p, ptr.value, len.value, alignment, false);
+ return {};
+ }
+ case BuiltinProc_mem_zero_volatile:
+ {
+ 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);
+
+ unsigned alignment = 1;
+ lb_mem_zero_ptr_internal(p, ptr.value, len.value, alignment, true);
return {};
}