diff options
| author | Laytan Laats <laytanlaats@hotmail.com> | 2024-04-02 18:49:35 +0200 |
|---|---|---|
| committer | Laytan Laats <laytanlaats@hotmail.com> | 2024-04-02 18:49:35 +0200 |
| commit | fc30bde0f6d91cdcfc518b9ca729ff5014a006ef (patch) | |
| tree | f7a58b46f1416e14a33bf1229f8bd4f3816b5d78 /src | |
| parent | a8d8696e2fcaccfc34504ec897a6551ff7bfe4b1 (diff) | |
fix untyped nil into c varargs
Fixes #2842
Diffstat (limited to 'src')
| -rw-r--r-- | src/llvm_backend_proc.cpp | 6 |
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))); |