6d75f54310
Moves the sanitizer ui tests to the sanitizer directory and removes the sanitizer prefix from tests file names similarly to how the sanitizer codegen tests are organized.
33 lines
890 B
Rust
33 lines
890 B
Rust
//@ 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
|
|
}
|