diff options
| author | bors <bors@rust-lang.org> | 2023-03-02 05:27:32 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-03-02 05:27:32 +0000 |
| commit | 18caf88956ecf454e24307e598b8ac9967f10b07 (patch) | |
| tree | bdbde06d9ce62e4de233cda1d46d8c8a27e7e1c7 | |
| parent | 864b6258fc7b493aec01f980b31ff23901c0edae (diff) | |
| parent | 565de58dd705e6b4dc1adda0f96b102360276ef5 (diff) | |
| download | rust-18caf88956ecf454e24307e598b8ac9967f10b07.tar.gz rust-18caf88956ecf454e24307e598b8ac9967f10b07.zip | |
Auto merge of #107879 - icedrocket:update-llvm, r=cuviper
Update LLVM submodule Fixes #105626
| -rw-r--r-- | src/bootstrap/config/tests.rs | 5 | ||||
| -rw-r--r-- | src/bootstrap/native.rs | 21 | ||||
| m--------- | src/llvm-project | 0 | ||||
| -rw-r--r-- | tests/ui/numbers-arithmetic/issue-105626.rs | 17 |
4 files changed, 34 insertions, 9 deletions
diff --git a/src/bootstrap/config/tests.rs b/src/bootstrap/config/tests.rs index 681ecbfeb5b..5a105007f21 100644 --- a/src/bootstrap/config/tests.rs +++ b/src/bootstrap/config/tests.rs @@ -11,6 +11,11 @@ fn parse(config: &str) -> Config { #[test] fn download_ci_llvm() { + if crate::native::is_ci_llvm_modified(&parse("")) { + eprintln!("Detected LLVM as non-available: running in CI and modified LLVM in this change"); + return; + } + let parse_llvm = |s| parse(s).llvm_from_ci; let if_available = parse_llvm("llvm.download-ci-llvm = \"if-available\""); diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs index 21157b02a78..5987b641b39 100644 --- a/src/bootstrap/native.rs +++ b/src/bootstrap/native.rs @@ -216,21 +216,24 @@ pub(crate) fn is_ci_llvm_available(config: &Config, asserts: bool) -> bool { } } - if CiEnv::is_ci() { + if is_ci_llvm_modified(config) { + eprintln!("Detected LLVM as non-available: running in CI and modified LLVM in this change"); + return false; + } + + true +} + +/// Returns true if we're running in CI with modified LLVM (and thus can't download it) +pub(crate) fn is_ci_llvm_modified(config: &Config) -> bool { + CiEnv::is_ci() && { // We assume we have access to git, so it's okay to unconditionally pass // `true` here. let llvm_sha = detect_llvm_sha(config, true); let head_sha = output(config.git().arg("rev-parse").arg("HEAD")); let head_sha = head_sha.trim(); - if llvm_sha == head_sha { - eprintln!( - "Detected LLVM as non-available: running in CI and modified LLVM in this change" - ); - return false; - } + llvm_sha == head_sha } - - true } #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] diff --git a/src/llvm-project b/src/llvm-project -Subproject 477e7285b12f876ad105188cfcfc8adda7dc29a +Subproject fd949f3034f8a422ecfffa889c2823485dde4bd diff --git a/tests/ui/numbers-arithmetic/issue-105626.rs b/tests/ui/numbers-arithmetic/issue-105626.rs new file mode 100644 index 00000000000..f97edd510c9 --- /dev/null +++ b/tests/ui/numbers-arithmetic/issue-105626.rs @@ -0,0 +1,17 @@ +// run-pass +// only-x86 +// min-system-llvm-version: 16 +// compile-flags: -Ctarget-feature=+sse2 + +use std::hint::black_box; + +fn main() { + let n: i64 = black_box(0x3fffffdfffffff); + let r = f32::from_bits(0x5a7fffff); + + assert_ne!((n as f64) as f32, n as f32); + + // FIXME: these assertions fail if only x87 is enabled + assert_eq!(n as i64 as f32, r); + assert_eq!(n as u64 as f32, r); +} |
