diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-27 23:04:36 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-27 23:04:36 +0900 |
| commit | 82198e776761a6f3f16373d7be2be432b0e76854 (patch) | |
| tree | 55f3714e79c93dd1054b6e467ec1570d6bc7984f /src | |
| parent | 3e4a5690f3b8ecce4414b3a6864d6d7c965c5007 (diff) | |
| download | ducc-82198e776761a6f3f16373d7be2be432b0e76854.tar.gz ducc-82198e776761a6f3f16373d7be2be432b0e76854.tar.zst ducc-82198e776761a6f3f16373d7be2be432b0e76854.zip | |
fix: stack pointer is not aligned to 8 byte boundary
Diffstat (limited to 'src')
| -rw-r--r-- | src/codegen.c | 3 | ||||
| -rw-r--r-- | src/preprocess.c | 5 |
2 files changed, 3 insertions, 5 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) { diff --git a/src/preprocess.c b/src/preprocess.c index df688f1..8b52f7c 100644 --- a/src/preprocess.c +++ b/src/preprocess.c @@ -969,10 +969,7 @@ static BOOL preprocess_if_group_or_elif_group(Preprocessor* pp, int directive_to } static BOOL preprocess_if_group(Preprocessor* pp, int directive_token_pos) { - // TODO: this code does not work for some reason. - // return preprocess_if_group_or_elif_group(pp, directive_token_pos, FALSE); - int x = 0; - return preprocess_if_group_or_elif_group(pp, directive_token_pos, x); + return preprocess_if_group_or_elif_group(pp, directive_token_pos, FALSE); } static BOOL preprocess_elif_group(Preprocessor* pp, int directive_token_pos, BOOL did_process) { |
