From 5771877457d50ab2802f54221e612af2b2b74572 Mon Sep 17 00:00:00 2001 From: Luna Date: Thu, 23 Jul 2020 18:07:21 -0300 Subject: [PATCH] fix llvm_table shenanigans --- src/codegen/llvm.zig | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index f0894fb..0b931e0 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -176,12 +176,14 @@ pub const Codegen = struct { .Call => |call| { const name = call.callee.*.Variable.lexeme; - var llvm_func = self.llvm_table.get(name); - if (llvm_func == null) { + var llvm_func_entry = self.llvm_table.getEntry(name); + if (llvm_func_entry == null) { std.debug.warn("Function '{}' not found\n", .{name}); return CompileError.EmitError; } + const llvm_func = llvm_func_entry.?.value; + var args = LLVMValueList.init(self.allocator); errdefer args.deinit(); @@ -194,7 +196,7 @@ pub const Codegen = struct { return llvm.LLVMBuildCall( builder, - llvm_func.?, + llvm_func, args_slice.ptr, @intCast(c_uint, args_slice.len), "call", @@ -432,7 +434,8 @@ pub const Codegen = struct { ); var func = llvm.LLVMAddFunction(mod, name_cstr.ptr, llvm_ret_type); - _ = try self.llvm_table.put(name, func); + std.debug.warn("inserting function '{}' to llvm table\n", .{name}); + try self.llvm_table.put(name, func); var buf = try self.allocator.alloc(u8, 512); var entry_lbl = try std.fmt.bufPrint(buf, "fn_{}_entry", .{name});