aboutsummaryrefslogtreecommitdiff
path: root/src/generator.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/generator.c')
-rw-r--r--src/generator.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/generator.c b/src/generator.c
index 0b3bc4b..59a193e 100644
--- a/src/generator.c
+++ b/src/generator.c
@@ -333,7 +333,10 @@ void generate_block(Node *block, FILE *out);
void generate_statement(Node *stmt, FILE *out)
{
if (stmt->type == AST_RETURN) {
- generate_expr_into_rax(stmt->unary_expr, out);
+ if (stmt->unary_expr)
+ generate_expr_into_rax(stmt->unary_expr, out);
+ else
+ fprintf(out, " xor rax, rax\n"); // Return 0
fprintf(out, " push rax\n"); // Save the return value
// Run all the defer statements