aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-08-27 23:04:36 +0900
committernsfisis <nsfisis@gmail.com>2025-08-27 23:04:36 +0900
commit82198e776761a6f3f16373d7be2be432b0e76854 (patch)
tree55f3714e79c93dd1054b6e467ec1570d6bc7984f /src/codegen.c
parent3e4a5690f3b8ecce4414b3a6864d6d7c965c5007 (diff)
downloadducc-82198e776761a6f3f16373d7be2be432b0e76854.tar.gz
ducc-82198e776761a6f3f16373d7be2be432b0e76854.tar.zst
ducc-82198e776761a6f3f16373d7be2be432b0e76854.zip
fix: stack pointer is not aligned to 8 byte boundary
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 19d7079..2e7dc41 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -57,7 +57,8 @@ static void codegen_func_prologue(CodeGen* g, AstNode* ast) {
for (int i = 0; i < ast->node_params->node_len; ++i) {
fprintf(g->out, " push %s\n", param_reg(i));
}
- fprintf(g->out, " sub rsp, %d\n", ast->node_stack_size);
+ // Note: rsp must be aligned to 8.
+ fprintf(g->out, " sub rsp, %d\n", to_aligned(ast->node_stack_size, 8));
}
static void codegen_func_epilogue(CodeGen* g, AstNode* ast) {