diff options
| author | bors <bors@rust-lang.org> | 2023-07-22 15:09:09 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-07-22 15:09:09 +0000 |
| commit | ab0f3e680e4fd50218914b8afa6900a67377721c (patch) | |
| tree | 0e19d5d801a634c6c43ae0d3901e677475d719d5 /compiler/rustc_codegen_cranelift/example/std_example.rs | |
| parent | 8164cdb9ee460eddcb8888b9b6f72836a956d110 (diff) | |
| parent | 8ffa34ad4e41084a2bbd911a8f1727bb6e5738c9 (diff) | |
| download | rust-ab0f3e680e4fd50218914b8afa6900a67377721c.tar.gz rust-ab0f3e680e4fd50218914b8afa6900a67377721c.zip | |
Auto merge of #113960 - bjorn3:sync_cg_clif-2023-07-22, r=bjorn3
Sync rustc_codegen_cranelift This time Cranelift has been updated to 0.98. A couple of bugs have been fixed and a decent amount of x86 vendor intrinsics have been implemented. r? `@ghost` `@rustbot` label +A-codegen +A-cranelift +T-compiler
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); |
