about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-07-15 05:40:41 +0000
committerbors <bors@rust-lang.org>2019-07-15 05:40:41 +0000
commit9bb855cda0c5ae97faf5dbf1cd4935dd37fad066 (patch)
tree2a4b6a87d77cc27a0b336d52af5fabcbcc686433
parente452e2929d72a20ed0ceb09c48b6cd76b0a9a898 (diff)
parent6c293d8101618e0d3467a69adb3fb49a802de45d (diff)
downloadrust-9bb855cda0c5ae97faf5dbf1cd4935dd37fad066.tar.gz
rust-9bb855cda0c5ae97faf5dbf1cd4935dd37fad066.zip
Auto merge of #62674 - RalfJung:miri-abi, r=eddyb
RustIntrinsic and PlatformIntrinsic are also the same ABI as Rust

r? @eddyb
-rw-r--r--src/librustc_mir/interpret/terminator.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/librustc_mir/interpret/terminator.rs b/src/librustc_mir/interpret/terminator.rs
index c11e5e11923..75690b4d361 100644
--- a/src/librustc_mir/interpret/terminator.rs
+++ b/src/librustc_mir/interpret/terminator.rs
@@ -280,8 +280,13 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
                             _ => bug!("unexpected callee ty: {:?}", instance_ty),
                         }
                     };
-                    // Rust and RustCall are compatible
-                    let normalize_abi = |abi| if abi == Abi::RustCall { Abi::Rust } else { abi };
+                    let normalize_abi = |abi| match abi {
+                        Abi::Rust | Abi::RustCall | Abi::RustIntrinsic | Abi::PlatformIntrinsic =>
+                            // These are all the same ABI, really.
+                            Abi::Rust,
+                        abi =>
+                            abi,
+                    };
                     if normalize_abi(caller_abi) != normalize_abi(callee_abi) {
                         return err!(FunctionAbiMismatch(caller_abi, callee_abi));
                     }