Auto merge of #114528 - dtolnay:globalalloccast, r=cjgillot
Delete some useless casts from global_allocator expansion These casts are from when #\[global_allocator\] needed to translate back and forth between `*mut u8` and `*mut Opaque`. This should have been cleaned up as part of https://github.com/rust-lang/rust/pull/51241/commits/f6ab74b8e7efed01c1045773b6693f23f6ebd93c. Difference to code generated by `#[global_allocator] static ALLOCATOR: Allocator = Allocator;`: ```diff const _: () = { #[rustc_std_internal_symbol] unsafe fn __rust_alloc(arg0: usize, arg1: usize) -> *mut u8 { ::core::alloc::GlobalAlloc::alloc( &ALLOCATOR, ::core::alloc::Layout::from_size_align_unchecked(arg0, arg1), - ) as *mut u8 + ) } #[rustc_std_internal_symbol] unsafe fn __rust_dealloc(arg0: *mut u8, arg1: usize, arg2: usize) -> () { ::core::alloc::GlobalAlloc::dealloc( &ALLOCATOR, - arg0 as *mut u8, + arg0, ::core::alloc::Layout::from_size_align_unchecked(arg1, arg2), ) } #[rustc_std_internal_symbol] unsafe fn __rust_realloc( arg0: *mut u8, arg1: usize, arg2: usize, arg3: usize, ) -> *mut u8 { ::core::alloc::GlobalAlloc::realloc( &ALLOCATOR, - arg0 as *mut u8, + arg0, ::core::alloc::Layout::from_size_align_unchecked(arg1, arg2), arg3, - ) as *mut u8 + ) } #[rustc_std_internal_symbol] unsafe fn __rust_alloc_zeroed(arg0: usize, arg1: usize) -> *mut u8 { ::core::alloc::GlobalAlloc::alloc_zeroed( &ALLOCATOR, ::core::alloc::Layout::from_size_align_unchecked(arg0, arg1), - ) as *mut u8 + ) } }; ```
This commit is contained in:
commit
a339ed184f
1 changed files with 6 additions and 14 deletions
|
@ -78,11 +78,11 @@ impl AllocFnFactory<'_, '_> {
|
|||
};
|
||||
let args = method.inputs.iter().map(|ty| self.arg_ty(ty, &mut abi_args, &mut mk)).collect();
|
||||
let result = self.call_allocator(method.name, args);
|
||||
let (output_ty, output_expr) = self.ret_ty(&method.output, result);
|
||||
let output_ty = self.ret_ty(&method.output);
|
||||
let decl = self.cx.fn_decl(abi_args, ast::FnRetTy::Ty(output_ty));
|
||||
let header = FnHeader { unsafety: Unsafe::Yes(self.span), ..FnHeader::default() };
|
||||
let sig = FnSig { decl, header, span: self.span };
|
||||
let body = Some(self.cx.block_expr(output_expr));
|
||||
let body = Some(self.cx.block_expr(result));
|
||||
let kind = ItemKind::Fn(Box::new(Fn {
|
||||
defaultness: ast::Defaultness::Final,
|
||||
sig,
|
||||
|
@ -140,8 +140,7 @@ impl AllocFnFactory<'_, '_> {
|
|||
AllocatorTy::Ptr => {
|
||||
let ident = ident();
|
||||
args.push(self.cx.param(self.span, ident, self.ptr_u8()));
|
||||
let arg = self.cx.expr_ident(self.span, ident);
|
||||
self.cx.expr_cast(self.span, arg, self.ptr_u8())
|
||||
self.cx.expr_ident(self.span, ident)
|
||||
}
|
||||
|
||||
AllocatorTy::Usize => {
|
||||
|
@ -156,18 +155,11 @@ impl AllocFnFactory<'_, '_> {
|
|||
}
|
||||
}
|
||||
|
||||
fn ret_ty(&self, ty: &AllocatorTy, expr: P<Expr>) -> (P<Ty>, P<Expr>) {
|
||||
fn ret_ty(&self, ty: &AllocatorTy) -> P<Ty> {
|
||||
match *ty {
|
||||
AllocatorTy::ResultPtr => {
|
||||
// We're creating:
|
||||
//
|
||||
// #expr as *mut u8
|
||||
AllocatorTy::ResultPtr => self.ptr_u8(),
|
||||
|
||||
let expr = self.cx.expr_cast(self.span, expr, self.ptr_u8());
|
||||
(self.ptr_u8(), expr)
|
||||
}
|
||||
|
||||
AllocatorTy::Unit => (self.cx.ty(self.span, TyKind::Tup(ThinVec::new())), expr),
|
||||
AllocatorTy::Unit => self.cx.ty(self.span, TyKind::Tup(ThinVec::new())),
|
||||
|
||||
AllocatorTy::Layout | AllocatorTy::Usize | AllocatorTy::Ptr => {
|
||||
panic!("can't convert `AllocatorTy` to an output")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue