Merge pull request #3948 from roc-lang/windows-c-calling-convention

windows c calling convention
This commit is contained in:
Richard Feldman 2022-09-03 09:58:49 -07:00 committed by GitHub
commit 76547a61f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6719,7 +6719,13 @@ impl<'ctx> FunctionSpec<'ctx> {
/// According to the C ABI, how should we return a value with the given layout?
pub fn to_cc_return<'a, 'ctx, 'env>(env: &Env<'a, 'ctx, 'env>, layout: &Layout<'a>) -> CCReturn {
let return_size = layout.stack_size(env.layout_interner, env.target_info);
let pass_result_by_pointer = return_size > 2 * env.target_info.ptr_width() as u32;
let pass_result_by_pointer = match env.target_info.operating_system {
roc_target::OperatingSystem::Windows => {
return_size >= 2 * env.target_info.ptr_width() as u32
}
roc_target::OperatingSystem::Unix => return_size > 2 * env.target_info.ptr_width() as u32,
roc_target::OperatingSystem::Wasi => unreachable!(),
};
if return_size == 0 {
CCReturn::Void