aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 734003065..5b2ad6068 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -7778,6 +7778,19 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv,
// "Intrinsics"
+
+ case BuiltinProc_alloca:
+ {
+ lbValue sz = lb_build_expr(p, ce->args[0]);
+ i64 al = exact_value_to_i64(type_and_value_of_expr(ce->args[1]).value);
+
+ lbValue res = {};
+ res.type = t_u8_ptr;
+ res.value = LLVMBuildArrayAlloca(p->builder, lb_type(p->module, t_u8), sz.value, "");
+ LLVMSetAlignment(res.value, cast(unsigned)al);
+ return res;
+ }
+
case BuiltinProc_cpu_relax:
// TODO(bill): BuiltinProc_cpu_relax
// ir_write_str_lit(f, "call void asm sideeffect \"pause\", \"\"()");