Merge commit '1eded3619d
' into sync_cg_clif-2023-07-22
This commit is contained in:
commit
36708123c1
30 changed files with 668 additions and 170 deletions
27
compiler/rustc_codegen_cranelift/example/issue-59326.rs
Normal file
27
compiler/rustc_codegen_cranelift/example/issue-59326.rs
Normal file
|
@ -0,0 +1,27 @@
|
|||
// Based on https://github.com/rust-lang/rust/blob/689511047a75a30825e367d4fd45c74604d0b15e/tests/ui/issues/issue-59326.rs#L1
|
||||
// check-pass
|
||||
trait Service {
|
||||
type S;
|
||||
}
|
||||
|
||||
trait Framing {
|
||||
type F;
|
||||
}
|
||||
|
||||
impl Framing for () {
|
||||
type F = ();
|
||||
}
|
||||
|
||||
trait HttpService<F: Framing>: Service<S = F::F> {}
|
||||
|
||||
type BoxService = Box<dyn HttpService<(), S = ()>>;
|
||||
|
||||
fn build_server<F: FnOnce() -> BoxService>(_: F) {}
|
||||
|
||||
fn make_server<F: Framing>() -> Box<dyn HttpService<F, S = F::F>> {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
build_server(|| make_server())
|
||||
}
|
|
@ -547,7 +547,9 @@ impl<T> Box<T> {
|
|||
impl<T: ?Sized, A> Drop for Box<T, A> {
|
||||
fn drop(&mut self) {
|
||||
// inner value is dropped by compiler
|
||||
libc::free(self.0.pointer.0 as *mut u8);
|
||||
unsafe {
|
||||
libc::free(self.0.pointer.0 as *mut u8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue