mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 08:44:35 +00:00
Add test for -Znew-llvm-pass-manager -Clto=thin -Zsanitizer=...
Additionally verify that the current implementation of LLVM version check (which uses lexicographic ordering) is good enough to exclude versions before LLVM 9, where the new LLVM pass manager is unsupported.
This commit is contained in:
parent
a61e13423e
commit
52c5f2a577
27
src/test/ui/sanitize/new-llvm-pass-manager-thin-lto.rs
Normal file
27
src/test/ui/sanitize/new-llvm-pass-manager-thin-lto.rs
Normal file
@ -0,0 +1,27 @@
|
||||
// Regression test for sanitizer function instrumentation passes not
|
||||
// being run when compiling with new LLVM pass manager and ThinLTO.
|
||||
// Note: The issue occured only on non-zero opt-level.
|
||||
//
|
||||
// min-llvm-version 9.0
|
||||
// needs-sanitizer-support
|
||||
// only-x86_64
|
||||
//
|
||||
// no-prefer-dynamic
|
||||
// revisions: opt0 opt1
|
||||
// compile-flags: -Znew-llvm-pass-manager=yes -Zsanitizer=address -Clto=thin
|
||||
//[opt0]compile-flags: -Copt-level=0
|
||||
//[opt1]compile-flags: -Copt-level=1
|
||||
// run-fail
|
||||
// error-pattern: ERROR: AddressSanitizer: stack-use-after-scope
|
||||
|
||||
static mut P: *mut usize = std::ptr::null_mut();
|
||||
|
||||
fn main() {
|
||||
unsafe {
|
||||
{
|
||||
let mut x = 0;
|
||||
P = &mut x;
|
||||
}
|
||||
std::ptr::write_volatile(P, 123);
|
||||
}
|
||||
}
|
@ -109,6 +109,24 @@ fn no_system_llvm() {
|
||||
assert!(parse_rs(&config, "// no-system-llvm").ignore);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn llvm_version() {
|
||||
let mut config = config();
|
||||
|
||||
config.llvm_version = Some("8.1.2-rust".to_owned());
|
||||
assert!(parse_rs(&config, "// min-llvm-version 9.0").ignore);
|
||||
|
||||
config.llvm_version = Some("9.0.1-rust-1.43.0-dev".to_owned());
|
||||
assert!(parse_rs(&config, "// min-llvm-version 9.2").ignore);
|
||||
|
||||
config.llvm_version = Some("9.3.1-rust-1.43.0-dev".to_owned());
|
||||
assert!(!parse_rs(&config, "// min-llvm-version 9.2").ignore);
|
||||
|
||||
// FIXME.
|
||||
// config.llvm_version = Some("10.0.0-rust".to_owned());
|
||||
// assert!(!parse_rs(&config, "// min-llvm-version 9.0").ignore);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ignore_target() {
|
||||
let mut config = config();
|
||||
|
Loading…
Reference in New Issue
Block a user