From 97980c1f3896a630e146fb12d475edbb6c52cbf7 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 10 Jan 2026 00:18:17 +0900 Subject: feat: support passing arguments larger than 8 bytes --- src/ast.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/ast.c') diff --git a/src/ast.c b/src/ast.c index 388e211..59a2087 100644 --- a/src/ast.c +++ b/src/ast.c @@ -113,7 +113,7 @@ Type* type_new_func(Type* result, AstNode* params) { } bool type_is_unsized(Type* ty) { - return ty->kind == TypeKind_void || ty->kind == TypeKind_func; + return ty->kind == TypeKind_void; } int type_sizeof(Type* ty) { @@ -141,6 +141,8 @@ int type_sizeof(Type* ty) { return 8; else if (ty->kind == TypeKind_array) return type_sizeof(ty->base) * ty->array_size; + else if (ty->kind == TypeKind_func) + return 8; else unreachable(); } @@ -170,6 +172,8 @@ int type_alignof(Type* ty) { return 8; else if (ty->kind == TypeKind_array) return type_alignof(ty->base); + else if (ty->kind == TypeKind_func) + return 8; else unreachable(); } -- cgit v1.2.3-70-g09d2