2020-05-12 19:00:00 -05:00
|
|
|
// 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
|
2020-06-04 19:00:00 -05:00
|
|
|
// needs-sanitizer-address
|
2020-05-12 19:00:00 -05:00
|
|
|
//
|
|
|
|
// 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);
|
|
|
|
}
|