32 lines
701 B
Rust
32 lines
701 B
Rust
|
// 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
|
||
|
// only-x86_64
|
||
|
//
|
||
|
// 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);
|
||
|
}
|