Add intrinsic body fallback to cranelift and use it

This commit is contained in:
Oli Scherer
2024-01-31 14:29:12 +00:00
parent 531505f182
commit 8549c0a3e6
2 changed files with 32 additions and 35 deletions

View File

@@ -387,15 +387,19 @@ pub(crate) fn codegen_terminator_call<'tcx>(
match instance.def {
InstanceDef::Intrinsic(_) => {
crate::intrinsics::codegen_intrinsic_call(
match crate::intrinsics::codegen_intrinsic_call(
fx,
instance,
args,
ret_place,
target,
source_info,
);
return;
) {
Ok(()) => return,
// Unimplemented intrinsics must have a fallback body. The fallback body is obtained
// by converting the `InstanceDef::Intrinsic` to an `InstanceDef::Item`.
Err(()) => Some(Instance::new(instance.def_id(), instance.args)),
}
}
InstanceDef::DropGlue(_, None) => {
// empty drop glue - a nop.