//@ needs-sanitizer-support //@ needs-sanitizer-memory // //@ revisions: unoptimized optimized // //@ [optimized]compile-flags: -Z sanitizer=memory -Zsanitizer-memory-track-origins -O //@ [unoptimized]compile-flags: -Z sanitizer=memory -Zsanitizer-memory-track-origins // //@ run-pass // // This test case intentionally limits the usage of the std, // since it will be linked with an uninstrumented version of it. #![feature(core_intrinsics)] #![feature(start)] #![allow(invalid_value)] use std::hint::black_box; fn calling_black_box_on_zst_ok() { // It's OK to call black_box on a value of a zero-sized type, even if its // underlying the memory location is uninitialized. For non-zero-sized types, // this would be an MSAN error. let zst = (); black_box(zst); } #[start] fn main(_: isize, _: *const *const u8) -> isize { calling_black_box_on_zst_ok(); 0 }