mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-04 20:17:48 +00:00
llvm: specify calling convention on call
Looks like the compiler only was specifying the calling convention on function declarations, but not on function calls. But LLVM seems to produce "bad" code when optimizing with level -O2 unless you specify the same calling convention on the call too.
This commit is contained in:
@@ -891,6 +891,9 @@ gb_internal lbValue lb_emit_call_internal(lbProcedure *p, lbValue value, lbValue
|
||||
|
||||
LLVMValueRef ret = LLVMBuildCall2(p->builder, fnp, fn, args, arg_count, "");
|
||||
|
||||
auto llvm_cc = lb_calling_convention_map[proc_type->Proc.calling_convention];
|
||||
LLVMSetInstructionCallConv(ret, llvm_cc);
|
||||
|
||||
LLVMAttributeIndex param_offset = LLVMAttributeIndex_FirstArgIndex;
|
||||
if (return_ptr.value != nullptr) {
|
||||
param_offset += 1;
|
||||
|
||||
Reference in New Issue
Block a user