aboutsummaryrefslogtreecommitdiffhomepage
path: root/codegen.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-07-29 06:04:29 +0900
committernsfisis <nsfisis@gmail.com>2025-08-15 10:04:35 +0900
commitbd5bbdebf116bb03da335d0e18a55a5597b55548 (patch)
tree978a9c6c4240c6997dead272e33c0019c173734c /codegen.c
parent53eec2c3f3e0de5b252215fb662e50e0c1829513 (diff)
downloadducc-bd5bbdebf116bb03da335d0e18a55a5597b55548.tar.gz
ducc-bd5bbdebf116bb03da335d0e18a55a5597b55548.tar.zst
ducc-bd5bbdebf116bb03da335d0e18a55a5597b55548.zip
feat: function main() now returns zero if no return value are explicitly provided
Diffstat (limited to 'codegen.c')
-rw-r--r--codegen.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/codegen.c b/codegen.c
index 2240b22..d290e95 100644
--- a/codegen.c
+++ b/codegen.c
@@ -437,6 +437,10 @@ void codegen_func(CodeGen* g, AstNode* ast) {
codegen_func_prologue(g, ast);
codegen_stmt(g, ast->node_body);
+ if (string_equals_cstr(&ast->name, "main")) {
+ // C99: 5.1.2.2.3
+ printf(" mov rax, 0\n");
+ }
codegen_func_epilogue(g, ast);
printf("\n");