diff --git a/hello b/hello deleted file mode 100755 index a4b5094..0000000 Binary files a/hello and /dev/null differ diff --git a/src/codegen.zig b/src/codegen.zig index e71517e..0466d58 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -236,16 +236,11 @@ pub const Codegen = struct { return switch (metadata.using) { .Function => blk: { var param = metadata.from_function.?.parameters.get(vari.lexeme).?.value; + // var llvm_func = self.llvm_table.get(self.current_function_name.?).?.value; + // break :blk llvm.LLVMGetParam(llvm_func, @intCast(c_uint, param.idx)); - var buf = try self.allocator.alloc(u8, 512); - errdefer self.allocator.free(buf); - - var load_str = try std.fmt.bufPrint(buf, "{}_loaded", param.name); - - var load_cstr = try std.cstr.addNullByte(self.allocator, load_str); - errdefer self.allocator.free(load_cstr); - - break :blk llvm.LLVMBuildLoad(builder, param.llvm_alloca.?, load_cstr.ptr); + std.debug.warn("fn param alloca {} {}\n", param.name, param.llvm_alloca); + break :blk param.llvm_alloca.?; }, .Scope => @panic("TODO local variables"), @@ -449,11 +444,8 @@ pub const Codegen = struct { std.debug.warn("SET PARAM LLVM ALLOCA {} to {}\n", param_node.name.lexeme, alloca); param.llvm_alloca = alloca; - _ = llvm.LLVMBuildStore( - builder, - llvm.LLVMGetParam(func, @intCast(c_uint, idx)), - alloca, - ); + // TODO store register into stack param + // llvm.LLVMBuildStore(builder, null, assign_expr); } self.ctx.setScope(fn_sym.scope); diff --git a/src/comp_ctx.zig b/src/comp_ctx.zig index afbe5e4..a786770 100644 --- a/src/comp_ctx.zig +++ b/src/comp_ctx.zig @@ -85,7 +85,7 @@ pub const Parameter = struct { llvm_alloca: llvm.LLVMValueRef = null, }; -pub const ParameterMap = std.StringHashMap(*Parameter); +pub const ParameterMap = std.StringHashMap(Parameter); // functions, for our purposes, other than symbols, have: // - a return type @@ -274,14 +274,11 @@ pub const CompilationContext = struct { var param_map = ParameterMap.init(self.allocator); for (decl.params.toSlice()) |param, idx| { - var param_sym = try self.allocator.create(Parameter); - - param_sym.* = Parameter{ + _ = try param_map.put(param.name.lexeme, Parameter{ .name = param.name.lexeme, .idx = idx, .typ = param_types.at(idx), - }; - _ = try param_map.put(param.name.lexeme, param_sym); + }); } const lex = decl.func_name.lexeme;