aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2024-04-02 18:49:35 +0200
committerLaytan Laats <laytanlaats@hotmail.com>2024-04-02 18:49:35 +0200
commitfc30bde0f6d91cdcfc518b9ca729ff5014a006ef (patch)
treef7a58b46f1416e14a33bf1229f8bd4f3816b5d78
parenta8d8696e2fcaccfc34504ec897a6551ff7bfe4b1 (diff)
fix untyped nil into c varargs
Fixes #2842
-rw-r--r--src/llvm_backend_proc.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 7338281dc..2c79499f4 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -3359,6 +3359,9 @@ gb_internal lbValue lb_build_call_expr_internal(lbProcedure *p, Ast *expr) {
for (Ast *var_arg : variadic) {
lbValue arg = lb_build_expr(p, var_arg);
if (is_type_any(elem_type)) {
+ if (is_type_untyped_nil(arg.type)) {
+ arg = lb_const_nil(p->module, t_rawptr);
+ }
array_add(&args, lb_emit_conv(p, arg, c_vararg_promote_type(default_type(arg.type))));
} else {
array_add(&args, lb_emit_conv(p, arg, c_vararg_promote_type(elem_type)));
@@ -3434,6 +3437,9 @@ gb_internal lbValue lb_build_call_expr_internal(lbProcedure *p, Ast *expr) {
for (Ast *var_arg : literal->elems) {
lbValue arg = lb_build_expr(p, var_arg);
if (is_type_any(elem_type)) {
+ if (is_type_untyped_nil(arg.type)) {
+ arg = lb_const_nil(p->module, t_rawptr);
+ }
array_add(&args, lb_emit_conv(p, arg, c_vararg_promote_type(default_type(arg.type))));
} else {
array_add(&args, lb_emit_conv(p, arg, c_vararg_promote_type(elem_type)));