Skip to content

Commit a1923b3

Browse files
authored
Rollup merge of #132995 - Eclips4:issue-132348, r=jieyouxu
compiletest: Add ``exact-llvm-major-version`` directive Now contributors don't need to use `min-llvm-version: X` + `ignore-llvm-version: X+1 - 99`, so they can simply use `exact-llvm-major-version: X` To be honest, I didn't find any usages of that hack other than the one mentioned in the issue. ( `tests/codegen/try_question_mark_nop.rs`) Closes #132348. rustc-dev-guide PR for `//@ exact-llvm-major-version`: rust-lang/rustc-dev-guide#2135 r? jieyouxu
2 parents a5372ed + 81f6105 commit a1923b3

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

src/tools/compiletest/src/directive-list.rs

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
2525
"dont-check-failure-status",
2626
"edition",
2727
"error-pattern",
28+
"exact-llvm-major-version",
2829
"exec-env",
2930
"failure-status",
3031
"filecheck-flags",

src/tools/compiletest/src/header.rs

+13
Original file line numberDiff line numberDiff line change
@@ -1585,6 +1585,19 @@ fn ignore_llvm(config: &Config, line: &str) -> IgnoreDecision {
15851585
};
15861586
}
15871587
}
1588+
} else if let Some(version_string) =
1589+
config.parse_name_value_directive(line, "exact-llvm-major-version")
1590+
{
1591+
// Syntax is "exact-llvm-major-version: <version>"
1592+
let version = extract_llvm_version(&version_string);
1593+
if actual_version.major != version.major {
1594+
return IgnoreDecision::Ignore {
1595+
reason: format!(
1596+
"ignored when the actual LLVM major version is {}, but the test only targets major version {}",
1597+
actual_version.major, version.major
1598+
),
1599+
};
1600+
}
15881601
}
15891602
}
15901603
IgnoreDecision::Continue

src/tools/compiletest/src/header/tests.rs

+15
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,21 @@ fn llvm_version() {
284284

285285
let config: Config = cfg().llvm_version("10.0.0").build();
286286
assert!(!check_ignore(&config, "//@ min-llvm-version: 9.0"));
287+
288+
let config: Config = cfg().llvm_version("10.0.0").build();
289+
assert!(check_ignore(&config, "//@ exact-llvm-major-version: 9.0"));
290+
291+
let config: Config = cfg().llvm_version("9.0.0").build();
292+
assert!(check_ignore(&config, "//@ exact-llvm-major-version: 10.0"));
293+
294+
let config: Config = cfg().llvm_version("10.0.0").build();
295+
assert!(!check_ignore(&config, "//@ exact-llvm-major-version: 10.0"));
296+
297+
let config: Config = cfg().llvm_version("10.0.0").build();
298+
assert!(!check_ignore(&config, "//@ exact-llvm-major-version: 10"));
299+
300+
let config: Config = cfg().llvm_version("10.6.2").build();
301+
assert!(!check_ignore(&config, "//@ exact-llvm-major-version: 10"));
287302
}
288303

289304
#[test]

tests/codegen/try_question_mark_nop.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
//@ only-x86_64
33
// FIXME: Remove the `min-llvm-version`.
44
//@ revisions: NINETEEN TWENTY
5-
//@[NINETEEN] min-llvm-version: 19
6-
//@[NINETEEN] ignore-llvm-version: 20-99
5+
//@[NINETEEN] exact-llvm-major-version: 19
76
//@[TWENTY] min-llvm-version: 20
87
//@ min-llvm-version: 19
98

0 commit comments

Comments
 (0)