// 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>) -> MaybeDangling> { 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>) -> MaybeDangling> { 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 }