diff options
| author | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2024-01-31 14:29:12 +0000 |
|---|---|---|
| committer | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2024-02-12 17:44:55 +0000 |
| commit | 8549c0a3e6b39b31f29f308d3b33744aaefa4080 (patch) | |
| tree | e6d391681a84dd8ffe1b6ab2acad6b402875e61a /compiler/rustc_codegen_cranelift/src/abi | |
| parent | 531505f1826941db43c4ccd7643a549e78b53832 (diff) | |
Add intrinsic body fallback to cranelift and use it
Diffstat (limited to 'compiler/rustc_codegen_cranelift/src/abi')
| -rw-r--r-- | compiler/rustc_codegen_cranelift/src/abi/mod.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/compiler/rustc_codegen_cranelift/src/abi/mod.rs b/compiler/rustc_codegen_cranelift/src/abi/mod.rs index 0f0d828c8fc..fd1f081a0a8 100644 --- a/compiler/rustc_codegen_cranelift/src/abi/mod.rs +++ b/compiler/rustc_codegen_cranelift/src/abi/mod.rs @@ -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. |
