Skip to content

Commit

Permalink
Auto merge of #107879 - icedrocket:update-llvm, r=cuviper
Browse files Browse the repository at this point in the history
Update LLVM submodule

Fixes #105626
  • Loading branch information
bors committed Mar 2, 2023
2 parents 864b625 + 565de58 commit 18caf88
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 10 deletions.
5 changes: 5 additions & 0 deletions src/bootstrap/config/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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\"");

Expand Down
21 changes: 12 additions & 9 deletions src/bootstrap/native.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down
17 changes: 17 additions & 0 deletions tests/ui/numbers-arithmetic/issue-105626.rs
Original file line number Diff line number Diff line change
@@ -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);
}

0 comments on commit 18caf88

Please sign in to comment.