1
Fork 0

only set noalias on Box with the global allocator

This commit is contained in:
Ralf Jung 2024-03-05 11:32:03 +01:00
parent 5a1e5449c8
commit f391c0793b
17 changed files with 75 additions and 28 deletions

View file

@ -2,6 +2,7 @@
#![crate_type = "lib"]
#![feature(dyn_star)]
#![feature(generic_nonzero)]
#![feature(allocator_api)]
use std::mem::MaybeUninit;
use std::num::NonZero;
@ -182,6 +183,15 @@ pub fn _box(x: Box<i32>) -> Box<i32> {
x
}
// With a custom allocator, it should *not* have `noalias`. (See
// <https://github.com/rust-lang/miri/issues/3341> for why.) The second argument is the allocator,
// which is a reference here that still carries `noalias` as usual.
// CHECK: @_box_custom(ptr noundef nonnull align 4 %x.0, ptr noalias noundef nonnull readonly align 1 %x.1)
#[no_mangle]
pub fn _box_custom(x: Box<i32, &std::alloc::Global>) {
drop(x)
}
// CHECK: noundef nonnull align 4 ptr @notunpin_box(ptr noundef nonnull align 4 %x)
#[no_mangle]
pub fn notunpin_box(x: Box<NotUnpin>) -> Box<NotUnpin> {