1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
// Regression test for issue 72154, where the use of AddressSanitizer enabled
// emission of lifetime markers during codegen, while at the same time asking
// always inliner pass not to insert them. This eventually lead to a
// miscompilation which was subsequently detected by AddressSanitizer as UB.
//
//@ needs-sanitizer-support
//@ needs-sanitizer-address
//@ ignore-cross-compile
//
//@ compile-flags: -Copt-level=0 -Zsanitizer=address
//@ run-pass
pub struct Wrap {
pub t: [usize; 1]
}
impl Wrap {
#[inline(always)]
pub fn new(t: [usize; 1]) -> Self {
Wrap { t }
}
}
#[inline(always)]
pub fn assume_init() -> [usize; 1] {
[1234]
}
fn main() {
let x: [usize; 1] = assume_init();
Wrap::new(x);
}
|