codegen: use Parameter.llvm_alloca
This commit is contained in:
parent
61c8493484
commit
93811c986d
2 changed files with 5 additions and 8 deletions
|
@ -24,6 +24,7 @@ pub const NodeType = enum {
|
||||||
pub const ParamDecl = struct {
|
pub const ParamDecl = struct {
|
||||||
name: Token,
|
name: Token,
|
||||||
typ: Token,
|
typ: Token,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const MethodData = struct {
|
pub const MethodData = struct {
|
||||||
|
|
|
@ -236,14 +236,10 @@ pub const Codegen = struct {
|
||||||
return switch (metadata.using) {
|
return switch (metadata.using) {
|
||||||
.Function => blk: {
|
.Function => blk: {
|
||||||
var param = metadata.from_function.?.parameters.get(vari.lexeme).?.value;
|
var param = metadata.from_function.?.parameters.get(vari.lexeme).?.value;
|
||||||
var llvm_func = self.llvm_table.get(self.current_function_name.?).?.value;
|
// var llvm_func = self.llvm_table.get(self.current_function_name.?).?.value;
|
||||||
|
// break :blk llvm.LLVMGetParam(llvm_func, @intCast(c_uint, param.idx));
|
||||||
|
|
||||||
// TODO we should create stack-stored variables
|
break :blk param.llvm_alloca;
|
||||||
// instead of the arg registers
|
|
||||||
|
|
||||||
// may i thank all the demons in hell for giving me
|
|
||||||
// good energies to make this work
|
|
||||||
break :blk llvm.LLVMGetParam(llvm_func, @intCast(c_uint, param.idx));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
.Scope => @panic("TODO local variables"),
|
.Scope => @panic("TODO local variables"),
|
||||||
|
@ -359,7 +355,6 @@ pub const Codegen = struct {
|
||||||
|
|
||||||
var fn_symbol = self.getFnSymbol(self.current_function_name.?);
|
var fn_symbol = self.getFnSymbol(self.current_function_name.?);
|
||||||
|
|
||||||
// TODO add llvm value ref to var metadata as well
|
|
||||||
var variable = llvm.LLVMBuildAlloca(
|
var variable = llvm.LLVMBuildAlloca(
|
||||||
builder,
|
builder,
|
||||||
try self.typeToLLVM(var_metadata.typ),
|
try self.typeToLLVM(var_metadata.typ),
|
||||||
|
@ -442,6 +437,7 @@ pub const Codegen = struct {
|
||||||
param.llvm_alloca = alloca;
|
param.llvm_alloca = alloca;
|
||||||
|
|
||||||
// TODO store register into stack param
|
// TODO store register into stack param
|
||||||
|
// llvm.LLVMBuildStore(builder, null, assign_expr);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.ctx.setScope(fn_sym.scope);
|
self.ctx.setScope(fn_sym.scope);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue