about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2019-07-14 11:58:12 +0200
committerRalf Jung <post@ralfj.de>2019-07-14 11:58:12 +0200
commit26528b969f74e6a4fa1799cac24058879aa57bc4 (patch)
tree8694b0231c6de53ea9da8471c3519fbe3e4ddeac
parentfa6b70658e76ca47e1627308c736edab63a17dc8 (diff)
downloadrust-26528b969f74e6a4fa1799cac24058879aa57bc4.tar.gz
rust-26528b969f74e6a4fa1799cac24058879aa57bc4.zip
RustIntrinsic and PlatformIntrinsic are also the same ABI as Rust
-rw-r--r--src/librustc_mir/interpret/terminator.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/librustc_mir/interpret/terminator.rs b/src/librustc_mir/interpret/terminator.rs
index c11e5e11923..4813186ac6e 100644
--- a/src/librustc_mir/interpret/terminator.rs
+++ b/src/librustc_mir/interpret/terminator.rs
@@ -281,7 +281,13 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
                         }
                     };
                     // 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));
                     }