blob: 07493ecac79c54d87a0dad12a97a50c0afe9eb9e [file] [log] [blame] [edit]
// This test checks for absence of noalias and dereferenceable attributes on
// arguments wrapped in `MaybeDangling`.
//
// This also tests
//
//@ compile-flags: -Copt-level=3 -Zmerge-functions=disabled -Cno-prepopulate-passes
#![crate_type = "lib"]
#![feature(maybe_dangling)]
use std::mem::MaybeDangling;
// CHECK: define {{(dso_local )?}}noundef nonnull ptr @f(ptr noundef nonnull %x) unnamed_addr
#[no_mangle]
pub fn f(x: MaybeDangling<Box<u8>>) -> MaybeDangling<Box<u8>> {
x
}
// CHECK: define {{(dso_local )?}}noundef nonnull ptr @g(ptr noundef nonnull %x) unnamed_addr
#[no_mangle]
pub fn g(x: MaybeDangling<&u8>) -> MaybeDangling<&u8> {
x
}
// CHECK: define {{(dso_local )?}}noundef nonnull ptr @h(ptr noundef nonnull %x) unnamed_addr
#[no_mangle]
pub fn h(x: MaybeDangling<&mut u8>) -> MaybeDangling<&mut u8> {
x
}
// CHECK: define {{(dso_local )?}}noundef nonnull align 4 ptr @i(ptr noundef nonnull align 4 %x) unnamed_addr
#[no_mangle]
pub fn i(x: MaybeDangling<Box<u32>>) -> MaybeDangling<Box<u32>> {
x
}
// CHECK: define {{(dso_local )?}}noundef nonnull align 4 ptr @j(ptr noundef nonnull align 4 %x) unnamed_addr
#[no_mangle]
pub fn j(x: MaybeDangling<&u32>) -> MaybeDangling<&u32> {
x
}
// CHECK: define {{(dso_local )?}}noundef nonnull align 4 ptr @k(ptr noundef nonnull align 4 %x) unnamed_addr
#[no_mangle]
pub fn k(x: MaybeDangling<&mut u32>) -> MaybeDangling<&mut u32> {
x
}