diff options
| author | Mustafa Quraish <[email protected]> | 2022-02-05 05:50:57 -0500 |
|---|---|---|
| committer | Mustafa Quraish <[email protected]> | 2022-02-05 08:56:15 -0500 |
| commit | f84ee21f7b2eaab6a0ca2dbfef526bc6984f02ee (patch) | |
| tree | 49d7b1248c2c2574d6a0d7ec31c60a4823436afb /src/generator.c | |
| parent | Fix label counts during code generation for `||` and `&&` (diff) | |
| download | cup-f84ee21f7b2eaab6a0ca2dbfef526bc6984f02ee.tar.xz cup-f84ee21f7b2eaab6a0ca2dbfef526bc6984f02ee.zip | |
Allow empty return statements for void functions
Diffstat (limited to 'src/generator.c')
| -rw-r--r-- | src/generator.c | 5 |
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 |