From 2357de5a04c3b57e6d96da980f8390eed30a0ff9 Mon Sep 17 00:00:00 2001 From: Luna Date: Thu, 23 Jul 2020 18:07:13 -0300 Subject: [PATCH 1/2] llvm10 time --- build.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.zig b/build.zig index cd24748..a20d81d 100644 --- a/build.zig +++ b/build.zig @@ -7,7 +7,7 @@ pub fn build(b: *Builder) void { exe.install(); exe.linkSystemLibrary("c"); - exe.linkSystemLibrary("LLVM-9"); + exe.linkSystemLibrary("LLVM-10"); exe.linkSystemLibrary("stdc++"); const run_cmd = exe.run(); From 5771877457d50ab2802f54221e612af2b2b74572 Mon Sep 17 00:00:00 2001 From: Luna Date: Thu, 23 Jul 2020 18:07:21 -0300 Subject: [PATCH 2/2] 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});