diff options
| author | Ralf Jung <post@ralfj.de> | 2023-07-23 09:27:28 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-07-23 09:27:28 +0200 |
| commit | 8a3b7463ed657ddc3d705c44028f1fe7915edb60 (patch) | |
| tree | d5cc4f8f0bbfae65d776880374519df12393f27e /compiler/rustc_codegen_cranelift/example/std_example.rs | |
| parent | 46ddf460afb6b277700f1bac9a3e26b34dc2ed62 (diff) | |
| parent | cec34a43b1b14f4e39363f3b283d7ac4f593ee81 (diff) | |
| download | rust-8a3b7463ed657ddc3d705c44028f1fe7915edb60.tar.gz rust-8a3b7463ed657ddc3d705c44028f1fe7915edb60.zip | |
Merge from rustc
Diffstat (limited to 'compiler/rustc_codegen_cranelift/example/std_example.rs')
| -rw-r--r-- | compiler/rustc_codegen_cranelift/example/std_example.rs | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_cranelift/example/std_example.rs b/compiler/rustc_codegen_cranelift/example/std_example.rs index 1bf0ff64c92..490cc2404f6 100644 --- a/compiler/rustc_codegen_cranelift/example/std_example.rs +++ b/compiler/rustc_codegen_cranelift/example/std_example.rs @@ -1,4 +1,12 @@ -#![feature(core_intrinsics, generators, generator_trait, is_sorted, repr_simd)] +#![feature( + core_intrinsics, + generators, + generator_trait, + is_sorted, + repr_simd, + tuple_trait, + unboxed_closures +)] #[cfg(target_arch = "x86_64")] use std::arch::x86_64::*; @@ -155,12 +163,34 @@ fn main() { } foo(I64X2(0, 0)); + + transmute_fat_pointer(); + + rust_call_abi(); } fn panic(_: u128) { panic!(); } +use std::mem::transmute; + +#[cfg(target_pointer_width = "32")] +type TwoPtrs = i64; +#[cfg(target_pointer_width = "64")] +type TwoPtrs = i128; + +fn transmute_fat_pointer() -> TwoPtrs { + unsafe { transmute::<_, TwoPtrs>("true !") } +} + +extern "rust-call" fn rust_call_abi_callee<T: std::marker::Tuple>(_: T) {} + +fn rust_call_abi() { + rust_call_abi_callee(()); + rust_call_abi_callee((1, 2)); +} + #[repr(simd)] struct I64X2(i64, i64); |
