about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-02-12 20:24:22 +0100
committerBaitinq <[email protected]>2025-02-12 20:24:22 +0100
commita65ccc0c3401d4fe8f7202f98cee17667004912b (patch)
treef6206651e8af6a08c7989e4efb12413690119ca6
parentMisc: Update flake (diff)
downloadinterpreter-a65ccc0c3401d4fe8f7202f98cee17667004912b.tar.gz
interpreter-a65ccc0c3401d4fe8f7202f98cee17667004912b.tar.bz2
interpreter-a65ccc0c3401d4fe8f7202f98cee17667004912b.zip
Codegen: Dont alloca for function definitions
-rw-r--r--src/codegen.zig2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index ddc34cc..b5f46ae 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -130,7 +130,7 @@ pub const CodeGen = struct {
 
         std.debug.assert(self.environment.contains_variable(assignment_statement.name) != assignment_statement.is_declaration);
 
-        if (assignment_statement.is_declaration and self.environment.scope_stack.items.len > 1) {
+        if (assignment_statement.is_declaration and self.environment.scope_stack.items.len > 1 and assignment_statement.expression.* != .FUNCTION_DEFINITION) {
             const y = core.LLVMGetLastFunction(self.llvm_module);
             core.LLVMPositionBuilderAtEnd(self.builder, core.LLVMGetEntryBasicBlock(y));
             const x = try std.fmt.allocPrintZ(self.arena, "{s}", .{assignment_statement.name});