mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-01 16:31:13 +00:00
Fix calling convention stuff with LLVM C API
This commit is contained in:
@@ -2032,7 +2032,7 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) {
|
||||
if (build_context.metrics.os != TargetOs_js) {
|
||||
cc_kind = lb_calling_convention_map[pt->Proc.calling_convention];
|
||||
}
|
||||
LLVMSetFunctionCallConv(p->value, lb_calling_convention_map[pt->Proc.calling_convention]);
|
||||
LLVMSetFunctionCallConv(p->value, cc_kind);
|
||||
lbValue proc_value = {p->value, p->type};
|
||||
lb_add_entity(m, entity, proc_value);
|
||||
lb_add_member(m, p->name, proc_value);
|
||||
@@ -2172,8 +2172,12 @@ lbProcedure *lb_create_dummy_procedure(lbModule *m, String link_name, Type *type
|
||||
p->value = LLVMAddFunction(m->mod, c_link_name, func_type);
|
||||
|
||||
Type *pt = p->type;
|
||||
|
||||
LLVMSetFunctionCallConv(p->value, lb_calling_convention_map[pt->Proc.calling_convention]);
|
||||
lbCallingConventionKind cc_kind = lbCallingConvention_C;
|
||||
// TODO(bill): Clean up this logic
|
||||
if (build_context.metrics.os != TargetOs_js) {
|
||||
cc_kind = lb_calling_convention_map[pt->Proc.calling_convention];
|
||||
}
|
||||
LLVMSetFunctionCallConv(p->value, cc_kind);
|
||||
lbValue proc_value = {p->value, p->type};
|
||||
lb_add_member(m, p->name, proc_value);
|
||||
lb_add_procedure_value(m, p);
|
||||
|
||||
@@ -415,6 +415,7 @@ lbCallingConventionKind const lb_calling_convention_map[ProcCC_MAX] = {
|
||||
lbCallingConvention_C, // ProcCC_Invalid,
|
||||
lbCallingConvention_C, // ProcCC_Odin,
|
||||
lbCallingConvention_C, // ProcCC_Contextless,
|
||||
lbCallingConvention_C, // ProcCC_Pure,
|
||||
lbCallingConvention_C, // ProcCC_CDecl,
|
||||
lbCallingConvention_X86_StdCall, // ProcCC_StdCall,
|
||||
lbCallingConvention_X86_FastCall, // ProcCC_FastCall,
|
||||
|
||||
Reference in New Issue
Block a user