fixed: function call
This commit is contained in:
parent
d4ce3387b9
commit
d537dc94ae
|
@ -114,6 +114,8 @@ BackendError impl_func_decl(LLVMBackendCompileUnit* unit,
|
|||
|
||||
*llvm_fun = LLVMAddFunction(unit->module, name, llvm_fun_type);
|
||||
|
||||
g_hash_table_insert(scope->functions, name, llvm_fun_type);
|
||||
|
||||
g_array_free(llvm_params, FALSE);
|
||||
|
||||
return err;
|
||||
|
@ -136,9 +138,6 @@ BackendError impl_func_def(LLVMBackendCompileUnit* unit,
|
|||
func_scope->global_scope = global_scope;
|
||||
func_scope->params = g_hash_table_new(g_str_hash, g_str_equal);
|
||||
|
||||
// store function type in global scope
|
||||
g_hash_table_insert(global_scope->functions, (gpointer)name, llvm_func);
|
||||
|
||||
// create function body builder
|
||||
LLVMBasicBlockRef entry =
|
||||
LLVMAppendBasicBlockInContext(unit->context, llvm_func, "func.entry");
|
||||
|
|
|
@ -180,9 +180,11 @@ BackendError impl_func_call(LLVMBackendCompileUnit *unit,
|
|||
|
||||
if (err.kind == Success) {
|
||||
LLVMValueRef llvm_func = LLVMGetNamedFunction(unit->module, call->function->name);
|
||||
LLVMTypeRef llvm_func_type = LLVMTypeOf(llvm_func);
|
||||
|
||||
LLVMTypeRef llvm_func_type = g_hash_table_lookup(scope->func_scope->global_scope->functions, call->function->name);
|
||||
|
||||
LLVMBuildCall2(builder, llvm_func_type, llvm_func, arguments, call->expressions->len,
|
||||
"stmt.call");
|
||||
"");
|
||||
}
|
||||
|
||||
return err;
|
||||
|
|
Loading…
Reference in New Issue