Merge commit 'c07d1e2f88cb3b1a0604ae8f18b478c1aeb7a7fa' into sync_cg_clif-2023-10-21
This commit is contained in:
parent
4519e68957
commit
e472b5573a
@ -3,7 +3,7 @@ task:
|
|||||||
freebsd_instance:
|
freebsd_instance:
|
||||||
image: freebsd-13-2-release-amd64
|
image: freebsd-13-2-release-amd64
|
||||||
setup_rust_script:
|
setup_rust_script:
|
||||||
- pkg install -y git bash
|
- pkg install -y git bash binutils
|
||||||
- curl https://sh.rustup.rs -sSf --output rustup.sh
|
- curl https://sh.rustup.rs -sSf --output rustup.sh
|
||||||
- sh rustup.sh --default-toolchain none -y --profile=minimal
|
- sh rustup.sh --default-toolchain none -y --profile=minimal
|
||||||
target_cache:
|
target_cache:
|
||||||
|
10
.github/workflows/main.yml
vendored
10
.github/workflows/main.yml
vendored
@ -50,10 +50,12 @@ jobs:
|
|||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
TARGET_TRIPLE: aarch64-unknown-linux-gnu
|
TARGET_TRIPLE: aarch64-unknown-linux-gnu
|
||||||
# s390x requires QEMU 6.1 or greater, we could build it from source, but ubuntu 22.04 comes with 6.2 by default
|
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
TARGET_TRIPLE: s390x-unknown-linux-gnu
|
TARGET_TRIPLE: s390x-unknown-linux-gnu
|
||||||
|
- os: ubuntu-latest
|
||||||
|
env:
|
||||||
|
TARGET_TRIPLE: riscv64gc-unknown-linux-gnu
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
env:
|
env:
|
||||||
TARGET_TRIPLE: x86_64-pc-windows-msvc
|
TARGET_TRIPLE: x86_64-pc-windows-msvc
|
||||||
@ -92,6 +94,12 @@ jobs:
|
|||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y gcc-s390x-linux-gnu qemu-user
|
sudo apt-get install -y gcc-s390x-linux-gnu qemu-user
|
||||||
|
|
||||||
|
- name: Install riscv64gc toolchain and qemu
|
||||||
|
if: matrix.env.TARGET_TRIPLE == 'riscv64gc-unknown-linux-gnu'
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y gcc-riscv64-linux-gnu qemu-user
|
||||||
|
|
||||||
- name: Prepare dependencies
|
- name: Prepare dependencies
|
||||||
run: ./y.sh prepare
|
run: ./y.sh prepare
|
||||||
|
|
||||||
|
52
Cargo.lock
generated
52
Cargo.lock
generated
@ -45,18 +45,18 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-bforest"
|
name = "cranelift-bforest"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "03b9d1a9e776c27ad55d7792a380785d1fe8c2d7b099eed8dbd8f4af2b598192"
|
checksum = "8e5e1df0da8488dd03b34afc134ba84b754d61862cc465932a9e5d07952f661e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-entity",
|
"cranelift-entity",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen"
|
name = "cranelift-codegen"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5528483314c2dd5da438576cd8a9d0b3cedad66fb8a4727f90cd319a81950038"
|
checksum = "77a17ca4e699a0aaf49a0c88f6311a864f321048aa63f6b787cab20eb5f93f10"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bumpalo",
|
"bumpalo",
|
||||||
"cranelift-bforest",
|
"cranelift-bforest",
|
||||||
@ -75,39 +75,39 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen-meta"
|
name = "cranelift-codegen-meta"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0f46a8318163f7682e35b8730ba93c1b586a2da8ce12a0ed545efc1218550f70"
|
checksum = "022f2793cdade1d37a1f755ac42938a3f832f533eac6cafc8b26b209544c3c06"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen-shared",
|
"cranelift-codegen-shared",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen-shared"
|
name = "cranelift-codegen-shared"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "37d1239cfd50eecfaed468d46943f8650e32969591868ad50111613704da6c70"
|
checksum = "a4d72dbb83c2ad788dec4ad0843070973cb48c35a3ca19b1e7437ac40834fd9c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-control"
|
name = "cranelift-control"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bcc530560c8f16cc1d4dd7ea000c56f519c60d1a914977abe849ce555c35a61d"
|
checksum = "ae07cf26dcc90d546826d747ac63b6c40c916f34b03e92a6ae0422c28d771b8a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arbitrary",
|
"arbitrary",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-entity"
|
name = "cranelift-entity"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f333fa641a9ad2bff0b107767dcb972c18c2bfab7969805a1d7e42449ccb0408"
|
checksum = "c2fe6b7e49820893691aea497f36257e9d6f52061d8c4758d61d802d5f101a3d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-frontend"
|
name = "cranelift-frontend"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "06abf6563015a80f03f8bc4df307d0a81363f4eb73108df3a34f6e66fb6d5307"
|
checksum = "44f497576ca3674581581601b6a55ccc1b43447217648c880e5bce70db3cf659"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
"log",
|
"log",
|
||||||
@ -117,15 +117,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-isle"
|
name = "cranelift-isle"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0eb29d0edc8a5c029ed0f7ca77501f272738e3c410020b4a00f42ffe8ad2a8aa"
|
checksum = "b96aa02eac00fffee13b0cd37d17874ccdb3d5458983041accd825ef78ce6454"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-jit"
|
name = "cranelift-jit"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d16e8c5e212b1e63658aada17553497e7a259acab61f044d1f185527efa609fb"
|
checksum = "b1d6e0e308c873eefc185745a6b21daec2a10f7554c9fb67e334c2d7d756d979"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
@ -143,9 +143,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-module"
|
name = "cranelift-module"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d3b5fd273e1a959e920c7a9d790b1646d31acc8782bb549bad5ab85dd2fc9aa7"
|
checksum = "c1aa8ebb06eced4e478c3f94f1d65d4e7c93493f4640057912b27a3e34b84841"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
@ -154,9 +154,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-native"
|
name = "cranelift-native"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "006056a7fa920870bad06bf8e1b3033d70cbb7ee625b035efa9d90882a931868"
|
checksum = "2870170ca44054b202c737626607b87be6e35655084bd94a6ff807a5812ba7df"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
"libc",
|
"libc",
|
||||||
@ -165,9 +165,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-object"
|
name = "cranelift-object"
|
||||||
version = "0.100.0"
|
version = "0.101.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9c8be1b0e7720f30fec31be0c0b0b23caef2a73fa751190c6a251c1362e8f8c9"
|
checksum = "20647761742d17dabac8205da958910ede78599550e06418a16711a3ee2fc897"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
@ -374,9 +374,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmtime-jit-icache-coherence"
|
name = "wasmtime-jit-icache-coherence"
|
||||||
version = "13.0.0"
|
version = "14.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c6ff5f3707a5e3797deeeeac6ac26b2e1dd32dbc06693c0ab52e8ac4d18ec706"
|
checksum = "a3a5dda53ad6993f9b0a2d65fb49e0348a7232a27a8794064122870d6ee19eb2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"libc",
|
"libc",
|
||||||
|
12
Cargo.toml
12
Cargo.toml
@ -8,12 +8,12 @@ crate-type = ["dylib"]
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# These have to be in sync with each other
|
# These have to be in sync with each other
|
||||||
cranelift-codegen = { version = "0.100", features = ["unwind", "all-arch"] }
|
cranelift-codegen = { version = "0.101", features = ["unwind", "all-arch"] }
|
||||||
cranelift-frontend = { version = "0.100" }
|
cranelift-frontend = { version = "0.101" }
|
||||||
cranelift-module = { version = "0.100" }
|
cranelift-module = { version = "0.101" }
|
||||||
cranelift-native = { version = "0.100" }
|
cranelift-native = { version = "0.101" }
|
||||||
cranelift-jit = { version = "0.100", optional = true }
|
cranelift-jit = { version = "0.101", optional = true }
|
||||||
cranelift-object = { version = "0.100" }
|
cranelift-object = { version = "0.101" }
|
||||||
target-lexicon = "0.12.0"
|
target-lexicon = "0.12.0"
|
||||||
gimli = { version = "0.28", default-features = false, features = ["write"]}
|
gimli = { version = "0.28", default-features = false, features = ["write"]}
|
||||||
object = { version = "0.32", default-features = false, features = ["std", "read_core", "write", "archive", "coff", "elf", "macho", "pe"] }
|
object = { version = "0.32", default-features = false, features = ["std", "read_core", "write", "archive", "coff", "elf", "macho", "pe"] }
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use std::env;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
@ -259,6 +260,14 @@ fn build_clif_sysroot_for_triple(
|
|||||||
// inlining.
|
// inlining.
|
||||||
rustflags.push("-Zinline-mir".to_owned());
|
rustflags.push("-Zinline-mir".to_owned());
|
||||||
}
|
}
|
||||||
|
if let Some(prefix) = env::var_os("CG_CLIF_STDLIB_REMAP_PATH_PREFIX") {
|
||||||
|
rustflags.push("--remap-path-prefix".to_owned());
|
||||||
|
rustflags.push(format!(
|
||||||
|
"{}={}",
|
||||||
|
STDLIB_SRC.to_path(dirs).to_str().unwrap(),
|
||||||
|
prefix.to_str().unwrap()
|
||||||
|
));
|
||||||
|
}
|
||||||
compiler.rustflags.extend(rustflags);
|
compiler.rustflags.extend(rustflags);
|
||||||
let mut build_cmd = STANDARD_LIBRARY.build(&compiler, dirs);
|
let mut build_cmd = STANDARD_LIBRARY.build(&compiler, dirs);
|
||||||
maybe_incremental(&mut build_cmd);
|
maybe_incremental(&mut build_cmd);
|
||||||
|
@ -143,6 +143,7 @@ impl GitRepo {
|
|||||||
RelPath::PATCHES.to_path(dirs).join(format!("{}-lock.toml", self.patch_name));
|
RelPath::PATCHES.to_path(dirs).join(format!("{}-lock.toml", self.patch_name));
|
||||||
let target_lockfile = download_dir.join("Cargo.lock");
|
let target_lockfile = download_dir.join("Cargo.lock");
|
||||||
if source_lockfile.exists() {
|
if source_lockfile.exists() {
|
||||||
|
assert!(!target_lockfile.exists());
|
||||||
fs::copy(source_lockfile, target_lockfile).unwrap();
|
fs::copy(source_lockfile, target_lockfile).unwrap();
|
||||||
} else {
|
} else {
|
||||||
assert!(target_lockfile.exists());
|
assert!(target_lockfile.exists());
|
||||||
|
@ -104,8 +104,8 @@ const BASE_SYSROOT_SUITE: &[TestCase] = &[
|
|||||||
pub(crate) static RAND_REPO: GitRepo = GitRepo::github(
|
pub(crate) static RAND_REPO: GitRepo = GitRepo::github(
|
||||||
"rust-random",
|
"rust-random",
|
||||||
"rand",
|
"rand",
|
||||||
"f3dd0b885c4597b9617ca79987a0dd899ab29fcb",
|
"9a02c819cc1e4ec6959ae25eafbb5cf6acb68234",
|
||||||
"3f869e4fcd602b66",
|
"4934f0afb1d1c2ca",
|
||||||
"rand",
|
"rand",
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ pub(crate) static PORTABLE_SIMD_REPO: GitRepo = GitRepo::github(
|
|||||||
"rust-lang",
|
"rust-lang",
|
||||||
"portable-simd",
|
"portable-simd",
|
||||||
"4825b2a64d765317066948867e8714674419359b",
|
"4825b2a64d765317066948867e8714674419359b",
|
||||||
"8b188cc41f5af835",
|
"9e67d07c00f5fb0b",
|
||||||
"portable-simd",
|
"portable-simd",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -42,6 +42,16 @@ impl Compiler {
|
|||||||
"/usr/s390x-linux-gnu".to_owned(),
|
"/usr/s390x-linux-gnu".to_owned(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
"riscv64gc-unknown-linux-gnu" => {
|
||||||
|
// We are cross-compiling for riscv64. Use the correct linker and run tests in qemu.
|
||||||
|
self.rustflags.push("-Clinker=riscv64-linux-gnu-gcc".to_owned());
|
||||||
|
self.rustdocflags.push("-Clinker=riscv64-linux-gnu-gcc".to_owned());
|
||||||
|
self.runner = vec![
|
||||||
|
"qemu-riscv64".to_owned(),
|
||||||
|
"-L".to_owned(),
|
||||||
|
"/usr/riscv64-linux-gnu".to_owned(),
|
||||||
|
];
|
||||||
|
}
|
||||||
"x86_64-pc-windows-gnu" => {
|
"x86_64-pc-windows-gnu" => {
|
||||||
// We are cross-compiling for Windows. Run tests in wine.
|
// We are cross-compiling for Windows. Run tests in wine.
|
||||||
self.runner = vec!["wine".to_owned()];
|
self.runner = vec!["wine".to_owned()];
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
From a8fb97120d71252538b6b026695df40d02696bdb Mon Sep 17 00:00:00 2001
|
|
||||||
From: bjorn3 <bjorn3@users.noreply.github.com>
|
|
||||||
Date: Sat, 15 Aug 2020 20:04:38 +0200
|
|
||||||
Subject: [PATCH] [rand] Disable failing test
|
|
||||||
|
|
||||||
---
|
|
||||||
src/distributions/uniform.rs | 1 +
|
|
||||||
1 file changed, 1 insertion(+), 0 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/distributions/uniform.rs b/src/distributions/uniform.rs
|
|
||||||
index 480b859..c80bb6f 100644
|
|
||||||
--- a/src/distributions/uniform.rs
|
|
||||||
+++ b/src/distributions/uniform.rs
|
|
||||||
@@ -1314,6 +1314,7 @@ mod tests {
|
|
||||||
not(target_arch = "wasm32"),
|
|
||||||
not(target_arch = "asmjs")
|
|
||||||
))]
|
|
||||||
+ #[ignore] // Requires unwinding
|
|
||||||
fn test_float_assertions() {
|
|
||||||
use super::SampleUniform;
|
|
||||||
use std::panic::catch_unwind;
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
From eec874c889b8d24e5ad50faded24288150f057b1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Afonso Bordado <afonsobordado@az8.co>
|
|
||||||
Date: Tue, 27 Sep 2022 08:13:58 +0100
|
|
||||||
Subject: [PATCH] Disable rand tests on mingw
|
|
||||||
|
|
||||||
---
|
|
||||||
rand_distr/src/pareto.rs | 2 ++
|
|
||||||
rand_distr/tests/value_stability.rs | 4 ++++
|
|
||||||
2 files changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/rand_distr/src/pareto.rs b/rand_distr/src/pareto.rs
|
|
||||||
index 217899e..9cedeb7 100644
|
|
||||||
--- a/rand_distr/src/pareto.rs
|
|
||||||
+++ b/rand_distr/src/pareto.rs
|
|
||||||
@@ -107,6 +107,8 @@ mod tests {
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
+ // This is broken on x86_64-pc-windows-gnu presumably due to a broken powf implementation
|
|
||||||
+ #[cfg_attr(all(target_os = "windows", target_env = "gnu"), ignore)]
|
|
||||||
fn value_stability() {
|
|
||||||
fn test_samples<F: Float + Debug + Display + LowerExp, D: Distribution<F>>(
|
|
||||||
distr: D, thresh: F, expected: &[F],
|
|
||||||
diff --git a/rand_distr/tests/value_stability.rs b/rand_distr/tests/value_stability.rs
|
|
||||||
index 192ba74..0101ace 100644
|
|
||||||
--- a/rand_distr/tests/value_stability.rs
|
|
||||||
+++ b/rand_distr/tests/value_stability.rs
|
|
||||||
@@ -72,6 +72,8 @@ fn unit_disc_stability() {
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
+// This is broken on x86_64-pc-windows-gnu
|
|
||||||
+#[cfg_attr(all(target_os = "windows", target_env = "gnu"), ignore)]
|
|
||||||
fn pareto_stability() {
|
|
||||||
test_samples(213, Pareto::new(1.0, 1.0).unwrap(), &[
|
|
||||||
1.0423688f32, 2.1235929, 4.132709, 1.4679428,
|
|
||||||
@@ -143,6 +145,8 @@ fn inverse_gaussian_stability() {
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
+// This is broken on x86_64-pc-windows-gnu
|
|
||||||
+#[cfg_attr(all(target_os = "windows", target_env = "gnu"), ignore)]
|
|
||||||
fn gamma_stability() {
|
|
||||||
// Gamma has 3 cases: shape == 1, shape < 1, shape > 1
|
|
||||||
test_samples(223, Gamma::new(1.0, 5.0).unwrap(), &[
|
|
||||||
--
|
|
||||||
2.25.1
|
|
@ -1,304 +0,0 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
|
||||||
# It is not intended for manual editing.
|
|
||||||
version = 3
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "autocfg"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bitflags"
|
|
||||||
version = "1.3.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bumpalo"
|
|
||||||
version = "3.14.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "byteorder"
|
|
||||||
version = "1.4.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-if"
|
|
||||||
version = "1.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "console_error_panic_hook"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"wasm-bindgen",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "core_simd"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"proptest",
|
|
||||||
"std_float",
|
|
||||||
"test_helpers",
|
|
||||||
"wasm-bindgen",
|
|
||||||
"wasm-bindgen-test",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "js-sys"
|
|
||||||
version = "0.3.64"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
|
|
||||||
dependencies = [
|
|
||||||
"wasm-bindgen",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "log"
|
|
||||||
version = "0.4.20"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-traits"
|
|
||||||
version = "0.2.16"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "once_cell"
|
|
||||||
version = "1.18.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "ppv-lite86"
|
|
||||||
version = "0.2.17"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "proc-macro2"
|
|
||||||
version = "1.0.67"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "proptest"
|
|
||||||
version = "0.10.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "12e6c80c1139113c28ee4670dc50cc42915228b51f56a9e407f0ec60f966646f"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags",
|
|
||||||
"byteorder",
|
|
||||||
"num-traits",
|
|
||||||
"rand",
|
|
||||||
"rand_chacha",
|
|
||||||
"rand_xorshift",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quote"
|
|
||||||
version = "1.0.33"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rand"
|
|
||||||
version = "0.7.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
|
|
||||||
dependencies = [
|
|
||||||
"rand_chacha",
|
|
||||||
"rand_core",
|
|
||||||
"rand_hc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rand_chacha"
|
|
||||||
version = "0.2.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
|
|
||||||
dependencies = [
|
|
||||||
"ppv-lite86",
|
|
||||||
"rand_core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rand_core"
|
|
||||||
version = "0.5.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rand_hc"
|
|
||||||
version = "0.2.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
|
|
||||||
dependencies = [
|
|
||||||
"rand_core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rand_xorshift"
|
|
||||||
version = "0.2.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "77d416b86801d23dde1aa643023b775c3a462efc0ed96443add11546cdf1dca8"
|
|
||||||
dependencies = [
|
|
||||||
"rand_core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "scoped-tls"
|
|
||||||
version = "1.0.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "std_float"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"core_simd",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "syn"
|
|
||||||
version = "2.0.37"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "test_helpers"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"proptest",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-ident"
|
|
||||||
version = "1.0.12"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasm-bindgen"
|
|
||||||
version = "0.2.87"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"wasm-bindgen-macro",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasm-bindgen-backend"
|
|
||||||
version = "0.2.87"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
|
|
||||||
dependencies = [
|
|
||||||
"bumpalo",
|
|
||||||
"log",
|
|
||||||
"once_cell",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
"wasm-bindgen-shared",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasm-bindgen-futures"
|
|
||||||
version = "0.4.37"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"js-sys",
|
|
||||||
"wasm-bindgen",
|
|
||||||
"web-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasm-bindgen-macro"
|
|
||||||
version = "0.2.87"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
|
|
||||||
dependencies = [
|
|
||||||
"quote",
|
|
||||||
"wasm-bindgen-macro-support",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasm-bindgen-macro-support"
|
|
||||||
version = "0.2.87"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
"wasm-bindgen-backend",
|
|
||||||
"wasm-bindgen-shared",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasm-bindgen-shared"
|
|
||||||
version = "0.2.87"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasm-bindgen-test"
|
|
||||||
version = "0.3.37"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6e6e302a7ea94f83a6d09e78e7dc7d9ca7b186bc2829c24a22d0753efd680671"
|
|
||||||
dependencies = [
|
|
||||||
"console_error_panic_hook",
|
|
||||||
"js-sys",
|
|
||||||
"scoped-tls",
|
|
||||||
"wasm-bindgen",
|
|
||||||
"wasm-bindgen-futures",
|
|
||||||
"wasm-bindgen-test-macro",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasm-bindgen-test-macro"
|
|
||||||
version = "0.3.37"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ecb993dd8c836930ed130e020e77d9b2e65dd0fbab1b67c790b0f5d80b11a575"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "web-sys"
|
|
||||||
version = "0.3.64"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
|
|
||||||
dependencies = [
|
|
||||||
"js-sys",
|
|
||||||
"wasm-bindgen",
|
|
||||||
]
|
|
@ -174,9 +174,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.148"
|
version = "0.2.149"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
|
checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rustc-std-workspace-core",
|
"rustc-std-workspace-core",
|
||||||
]
|
]
|
||||||
@ -361,7 +361,6 @@ version = "0.0.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"addr2line",
|
"addr2line",
|
||||||
"alloc",
|
"alloc",
|
||||||
"cc",
|
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"compiler_builtins",
|
"compiler_builtins",
|
||||||
"core",
|
"core",
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
[toolchain]
|
[toolchain]
|
||||||
channel = "nightly-2023-10-09"
|
channel = "nightly-2023-10-21"
|
||||||
components = ["rust-src", "rustc-dev", "llvm-tools"]
|
components = ["rust-src", "rustc-dev", "llvm-tools"]
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
./y.sh build
|
# Compiletest expects all standard library paths to start with /rustc/FAKE_PREFIX.
|
||||||
|
# CG_CLIF_STDLIB_REMAP_PATH_PREFIX will cause cg_clif's build system to pass
|
||||||
|
# --remap-path-prefix to handle this.
|
||||||
|
CG_CLIF_STDLIB_REMAP_PATH_PREFIX=/rustc/FAKE_PREFIX ./y.sh build
|
||||||
|
|
||||||
echo "[SETUP] Rust fork"
|
echo "[SETUP] Rust fork"
|
||||||
git clone https://github.com/rust-lang/rust.git || true
|
git clone https://github.com/rust-lang/rust.git || true
|
||||||
@ -13,23 +16,6 @@ git checkout "$(rustc -V | cut -d' ' -f3 | tr -d '(')"
|
|||||||
git -c user.name=Dummy -c user.email=dummy@example.com -c commit.gpgSign=false \
|
git -c user.name=Dummy -c user.email=dummy@example.com -c commit.gpgSign=false \
|
||||||
am ../patches/*-stdlib-*.patch
|
am ../patches/*-stdlib-*.patch
|
||||||
|
|
||||||
git apply - <<EOF
|
|
||||||
diff --git a/library/alloc/Cargo.toml b/library/alloc/Cargo.toml
|
|
||||||
index d95b5b7f17f..00b6f0e3635 100644
|
|
||||||
--- a/library/alloc/Cargo.toml
|
|
||||||
+++ b/library/alloc/Cargo.toml
|
|
||||||
@@ -8,7 +8,7 @@ edition = "2018"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
core = { path = "../core" }
|
|
||||||
-compiler_builtins = { version = "0.1.40", features = ['rustc-dep-of-std'] }
|
|
||||||
+compiler_builtins = { version = "0.1.66", features = ['rustc-dep-of-std', 'no-asm'] }
|
|
||||||
|
|
||||||
[dev-dependencies]
|
|
||||||
rand = { version = "0.8.5", default-features = false, features = ["alloc"] }
|
|
||||||
rand_xorshift = "0.3.0"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat > config.toml <<EOF
|
cat > config.toml <<EOF
|
||||||
change-id = 115898
|
change-id = 115898
|
||||||
|
|
||||||
@ -49,11 +35,6 @@ verbose-tests = false
|
|||||||
EOF
|
EOF
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# FIXME remove once inline asm is fully supported
|
|
||||||
export RUSTFLAGS="$RUSTFLAGS --cfg=rustix_use_libc"
|
|
||||||
|
|
||||||
export CFG_VIRTUAL_RUST_SOURCE_BASE_DIR="$(cd build/stdlib; pwd)"
|
|
||||||
|
|
||||||
# Allow the testsuite to use llvm tools
|
# Allow the testsuite to use llvm tools
|
||||||
host_triple=$(rustc -vV | grep host | cut -d: -f2 | tr -d " ")
|
host_triple=$(rustc -vV | grep host | cut -d: -f2 | tr -d " ")
|
||||||
export LLVM_BIN_DIR="$(rustc --print sysroot)/lib/rustlib/$host_triple/bin"
|
export LLVM_BIN_DIR="$(rustc --print sysroot)/lib/rustlib/$host_triple/bin"
|
||||||
|
@ -27,8 +27,6 @@ rm tests/ui/parser/unclosed-delimiter-in-dep.rs # submodule contains //~ERROR
|
|||||||
# missing features
|
# missing features
|
||||||
# ================
|
# ================
|
||||||
|
|
||||||
rm -r tests/run-make/comment-section # cg_clif doesn't yet write the .comment section
|
|
||||||
|
|
||||||
# requires stack unwinding
|
# requires stack unwinding
|
||||||
# FIXME add needs-unwind to these tests
|
# FIXME add needs-unwind to these tests
|
||||||
rm -r tests/run-make/libtest-junit
|
rm -r tests/run-make/libtest-junit
|
||||||
@ -44,10 +42,8 @@ rm tests/ui/proc-macro/allowed-signatures.rs
|
|||||||
rm tests/ui/proc-macro/no-mangle-in-proc-macro-issue-111888.rs
|
rm tests/ui/proc-macro/no-mangle-in-proc-macro-issue-111888.rs
|
||||||
|
|
||||||
# vendor intrinsics
|
# vendor intrinsics
|
||||||
rm tests/ui/sse2.rs # cpuid not supported, so sse2 not detected
|
rm tests/ui/sse2.rs # CodegenBackend::target_features not yet implemented
|
||||||
rm tests/ui/simd/array-type.rs # "Index argument for `simd_insert` is not a constant"
|
rm tests/ui/simd/array-type.rs # "Index argument for `simd_insert` is not a constant"
|
||||||
rm tests/ui/simd/intrinsic/generic-bswap-byte.rs # simd_bswap not yet implemented
|
|
||||||
rm tests/ui/simd/intrinsic/generic-arithmetic-pass.rs # many missing simd intrinsics
|
|
||||||
|
|
||||||
# exotic linkages
|
# exotic linkages
|
||||||
rm tests/ui/issues/issue-33992.rs # unsupported linkages
|
rm tests/ui/issues/issue-33992.rs # unsupported linkages
|
||||||
@ -115,21 +111,6 @@ rm tests/ui/consts/issue-33537.rs # same
|
|||||||
rm tests/ui/layout/valid_range_oob.rs # different ICE message
|
rm tests/ui/layout/valid_range_oob.rs # different ICE message
|
||||||
rm tests/ui/const-generics/generic_const_exprs/issue-80742.rs # gives error instead of ICE with cg_clif
|
rm tests/ui/const-generics/generic_const_exprs/issue-80742.rs # gives error instead of ICE with cg_clif
|
||||||
|
|
||||||
rm tests/ui/consts/issue-miri-1910.rs # different error message
|
|
||||||
rm tests/ui/consts/offset_ub.rs # same
|
|
||||||
rm tests/ui/consts/const-eval/ub-slice-get-unchecked.rs # same
|
|
||||||
rm tests/ui/intrinsics/panic-uninitialized-zeroed.rs # same
|
|
||||||
rm tests/ui/lint/lint-const-item-mutation.rs # same
|
|
||||||
rm tests/ui/pattern/usefulness/doc-hidden-non-exhaustive.rs # same
|
|
||||||
rm tests/ui/suggestions/derive-trait-for-method-call.rs # same
|
|
||||||
rm tests/ui/typeck/issue-46112.rs # same
|
|
||||||
rm tests/ui/consts/const_cmp_type_id.rs # same
|
|
||||||
rm tests/ui/consts/issue-73976-monomorphic.rs # same
|
|
||||||
rm tests/ui/rfcs/rfc-3348-c-string-literals/non-ascii.rs # same
|
|
||||||
rm tests/ui/consts/const-eval/nonnull_as_ref_ub.rs # same
|
|
||||||
rm tests/ui/consts/issue-94675.rs # same
|
|
||||||
rm tests/ui/associated-types/issue-85103-layout-debug.rs # same
|
|
||||||
|
|
||||||
# rustdoc-clif passes extra args, suppressing the help message when no args are passed
|
# rustdoc-clif passes extra args, suppressing the help message when no args are passed
|
||||||
rm -r tests/run-make/issue-88756-default-output
|
rm -r tests/run-make/issue-88756-default-output
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ use crate::prelude::*;
|
|||||||
|
|
||||||
pub(crate) fn producer() -> String {
|
pub(crate) fn producer() -> String {
|
||||||
format!(
|
format!(
|
||||||
"cg_clif (rustc {}, cranelift {})",
|
"rustc version {} with cranelift {}",
|
||||||
rustc_interface::util::rustc_version_str().unwrap_or("unknown version"),
|
rustc_interface::util::rustc_version_str().unwrap_or("unknown version"),
|
||||||
cranelift_codegen::VERSION,
|
cranelift_codegen::VERSION,
|
||||||
)
|
)
|
||||||
|
@ -394,28 +394,31 @@ pub(crate) fn run_aot(
|
|||||||
let modules = tcx.sess.time("codegen mono items", || {
|
let modules = tcx.sess.time("codegen mono items", || {
|
||||||
cgus.iter()
|
cgus.iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(i, cgu)| match cgu_reuse[i] {
|
.map(|(i, cgu)| {
|
||||||
CguReuse::No => {
|
let cgu_reuse =
|
||||||
let dep_node = cgu.codegen_dep_node(tcx);
|
if backend_config.disable_incr_cache { CguReuse::No } else { cgu_reuse[i] };
|
||||||
tcx.dep_graph
|
match cgu_reuse {
|
||||||
.with_task(
|
CguReuse::No => {
|
||||||
dep_node,
|
let dep_node = cgu.codegen_dep_node(tcx);
|
||||||
tcx,
|
tcx.dep_graph
|
||||||
(
|
.with_task(
|
||||||
backend_config.clone(),
|
dep_node,
|
||||||
global_asm_config.clone(),
|
tcx,
|
||||||
cgu.name(),
|
(
|
||||||
concurrency_limiter.acquire(tcx.sess.diagnostic()),
|
backend_config.clone(),
|
||||||
),
|
global_asm_config.clone(),
|
||||||
module_codegen,
|
cgu.name(),
|
||||||
Some(rustc_middle::dep_graph::hash_result),
|
concurrency_limiter.acquire(tcx.sess.diagnostic()),
|
||||||
)
|
),
|
||||||
.0
|
module_codegen,
|
||||||
}
|
Some(rustc_middle::dep_graph::hash_result),
|
||||||
CguReuse::PreLto => unreachable!("LTO not yet supported"),
|
)
|
||||||
CguReuse::PostLto => {
|
.0
|
||||||
concurrency_limiter.job_already_done();
|
}
|
||||||
OngoingModuleCodegen::Sync(reuse_workproduct_for_cgu(tcx, cgu))
|
CguReuse::PreLto | CguReuse::PostLto => {
|
||||||
|
concurrency_limiter.job_already_done();
|
||||||
|
OngoingModuleCodegen::Sync(reuse_workproduct_for_cgu(tcx, cgu))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
|
@ -81,6 +81,10 @@ pub(crate) fn codegen_global_asm_item(tcx: TyCtxt<'_>, global_asm: &mut String,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn asm_supported(tcx: TyCtxt<'_>) -> bool {
|
||||||
|
cfg!(feature = "inline_asm") && !tcx.sess.target.is_like_windows
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub(crate) struct GlobalAsmConfig {
|
pub(crate) struct GlobalAsmConfig {
|
||||||
asm_enabled: bool,
|
asm_enabled: bool,
|
||||||
@ -90,10 +94,8 @@ pub(crate) struct GlobalAsmConfig {
|
|||||||
|
|
||||||
impl GlobalAsmConfig {
|
impl GlobalAsmConfig {
|
||||||
pub(crate) fn new(tcx: TyCtxt<'_>) -> Self {
|
pub(crate) fn new(tcx: TyCtxt<'_>) -> Self {
|
||||||
let asm_enabled = cfg!(feature = "inline_asm") && !tcx.sess.target.is_like_windows;
|
|
||||||
|
|
||||||
GlobalAsmConfig {
|
GlobalAsmConfig {
|
||||||
asm_enabled,
|
asm_enabled: asm_supported(tcx),
|
||||||
assembler: crate::toolchain::get_toolchain_binary(tcx.sess, "as"),
|
assembler: crate::toolchain::get_toolchain_binary(tcx.sess, "as"),
|
||||||
output_filenames: tcx.output_filenames(()).clone(),
|
output_filenames: tcx.output_filenames(()).clone(),
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ use rustc_span::sym;
|
|||||||
use rustc_target::asm::*;
|
use rustc_target::asm::*;
|
||||||
use target_lexicon::BinaryFormat;
|
use target_lexicon::BinaryFormat;
|
||||||
|
|
||||||
|
use crate::global_asm::asm_supported;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
enum CInlineAsmOperand<'tcx> {
|
enum CInlineAsmOperand<'tcx> {
|
||||||
@ -44,9 +45,13 @@ pub(crate) fn codegen_inline_asm<'tcx>(
|
|||||||
) {
|
) {
|
||||||
// FIXME add .eh_frame unwind info directives
|
// FIXME add .eh_frame unwind info directives
|
||||||
|
|
||||||
if !template.is_empty()
|
if !asm_supported(fx.tcx) {
|
||||||
&& (cfg!(not(feature = "inline_asm")) || fx.tcx.sess.target.is_like_windows)
|
if template.is_empty() {
|
||||||
{
|
let destination_block = fx.get_block(destination.unwrap());
|
||||||
|
fx.bcx.ins().jump(destination_block, &[]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Used by panic_abort
|
// Used by panic_abort
|
||||||
if template[0] == InlineAsmTemplatePiece::String("int $$0x29".to_string()) {
|
if template[0] == InlineAsmTemplatePiece::String("int $$0x29".to_string()) {
|
||||||
fx.bcx.ins().trap(TrapCode::User(1));
|
fx.bcx.ins().trap(TrapCode::User(1));
|
||||||
@ -144,6 +149,16 @@ pub(crate) fn codegen_inline_asm<'tcx>(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Used by core::hint::spin_loop()
|
||||||
|
if template[0]
|
||||||
|
== InlineAsmTemplatePiece::String(".insn i 0x0F, 0, x0, x0, 0x010".to_string())
|
||||||
|
&& template.len() == 1
|
||||||
|
{
|
||||||
|
let destination_block = fx.get_block(destination.unwrap());
|
||||||
|
fx.bcx.ins().jump(destination_block, &[]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Used by measureme
|
// Used by measureme
|
||||||
if template[0] == InlineAsmTemplatePiece::String("xor %eax, %eax".to_string())
|
if template[0] == InlineAsmTemplatePiece::String("xor %eax, %eax".to_string())
|
||||||
&& template[1] == InlineAsmTemplatePiece::String("\n".to_string())
|
&& template[1] == InlineAsmTemplatePiece::String("\n".to_string())
|
||||||
@ -223,6 +238,16 @@ pub(crate) fn codegen_inline_asm<'tcx>(
|
|||||||
fx.bcx.ins().jump(destination_block, &[]);
|
fx.bcx.ins().jump(destination_block, &[]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cfg!(not(feature = "inline_asm")) {
|
||||||
|
fx.tcx.sess.span_err(
|
||||||
|
span,
|
||||||
|
"asm! and global_asm! support is disabled while compiling rustc_codegen_cranelift",
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
fx.tcx.sess.span_err(span, "asm! and global_asm! are not yet supported on Windows");
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let operands = operands
|
let operands = operands
|
||||||
@ -745,6 +770,13 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
|
|||||||
// x19 is reserved by LLVM for the "base pointer", so rustc doesn't allow using it
|
// x19 is reserved by LLVM for the "base pointer", so rustc doesn't allow using it
|
||||||
generated_asm.push_str(" mov x19, x0\n");
|
generated_asm.push_str(" mov x19, x0\n");
|
||||||
}
|
}
|
||||||
|
InlineAsmArch::RiscV64 => {
|
||||||
|
generated_asm.push_str(" addi sp, sp, -16\n");
|
||||||
|
generated_asm.push_str(" sd ra, 8(sp)\n");
|
||||||
|
generated_asm.push_str(" sd s1, 0(sp)\n"); // s1 is callee saved
|
||||||
|
// s1/x9 is reserved by LLVM for the "base pointer", so rustc doesn't allow using it
|
||||||
|
generated_asm.push_str(" mv s1, a0\n");
|
||||||
|
}
|
||||||
_ => unimplemented!("prologue for {:?}", arch),
|
_ => unimplemented!("prologue for {:?}", arch),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -761,6 +793,12 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
|
|||||||
generated_asm.push_str(" ldp fp, lr, [sp], #32\n");
|
generated_asm.push_str(" ldp fp, lr, [sp], #32\n");
|
||||||
generated_asm.push_str(" ret\n");
|
generated_asm.push_str(" ret\n");
|
||||||
}
|
}
|
||||||
|
InlineAsmArch::RiscV64 => {
|
||||||
|
generated_asm.push_str(" ld s1, 0(sp)\n");
|
||||||
|
generated_asm.push_str(" ld ra, 8(sp)\n");
|
||||||
|
generated_asm.push_str(" addi sp, sp, 16\n");
|
||||||
|
generated_asm.push_str(" ret\n");
|
||||||
|
}
|
||||||
_ => unimplemented!("epilogue for {:?}", arch),
|
_ => unimplemented!("epilogue for {:?}", arch),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -771,7 +809,10 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
|
|||||||
generated_asm.push_str(" ud2\n");
|
generated_asm.push_str(" ud2\n");
|
||||||
}
|
}
|
||||||
InlineAsmArch::AArch64 => {
|
InlineAsmArch::AArch64 => {
|
||||||
generated_asm.push_str(" brk #0x1");
|
generated_asm.push_str(" brk #0x1\n");
|
||||||
|
}
|
||||||
|
InlineAsmArch::RiscV64 => {
|
||||||
|
generated_asm.push_str(" ebreak\n");
|
||||||
}
|
}
|
||||||
_ => unimplemented!("epilogue_noreturn for {:?}", arch),
|
_ => unimplemented!("epilogue_noreturn for {:?}", arch),
|
||||||
}
|
}
|
||||||
@ -794,6 +835,11 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
|
|||||||
reg.emit(generated_asm, InlineAsmArch::AArch64, None).unwrap();
|
reg.emit(generated_asm, InlineAsmArch::AArch64, None).unwrap();
|
||||||
writeln!(generated_asm, ", [x19, 0x{:x}]", offset.bytes()).unwrap();
|
writeln!(generated_asm, ", [x19, 0x{:x}]", offset.bytes()).unwrap();
|
||||||
}
|
}
|
||||||
|
InlineAsmArch::RiscV64 => {
|
||||||
|
generated_asm.push_str(" sd ");
|
||||||
|
reg.emit(generated_asm, InlineAsmArch::RiscV64, None).unwrap();
|
||||||
|
writeln!(generated_asm, ", 0x{:x}(s1)", offset.bytes()).unwrap();
|
||||||
|
}
|
||||||
_ => unimplemented!("save_register for {:?}", arch),
|
_ => unimplemented!("save_register for {:?}", arch),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -815,6 +861,11 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
|
|||||||
reg.emit(generated_asm, InlineAsmArch::AArch64, None).unwrap();
|
reg.emit(generated_asm, InlineAsmArch::AArch64, None).unwrap();
|
||||||
writeln!(generated_asm, ", [x19, 0x{:x}]", offset.bytes()).unwrap();
|
writeln!(generated_asm, ", [x19, 0x{:x}]", offset.bytes()).unwrap();
|
||||||
}
|
}
|
||||||
|
InlineAsmArch::RiscV64 => {
|
||||||
|
generated_asm.push_str(" ld ");
|
||||||
|
reg.emit(generated_asm, InlineAsmArch::RiscV64, None).unwrap();
|
||||||
|
writeln!(generated_asm, ", 0x{:x}(s1)", offset.bytes()).unwrap();
|
||||||
|
}
|
||||||
_ => unimplemented!("restore_register for {:?}", arch),
|
_ => unimplemented!("restore_register for {:?}", arch),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#![cfg_attr(not(bootstrap), allow(internal_features))]
|
#![cfg_attr(all(doc, not(bootstrap)), allow(internal_features))]
|
||||||
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
|
#![cfg_attr(all(doc, not(bootstrap)), feature(rustdoc_internals))]
|
||||||
#![cfg_attr(not(bootstrap), doc(rust_logo))]
|
#![cfg_attr(all(doc, not(bootstrap)), doc(rust_logo))]
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
// Note: please avoid adding other feature gates where possible
|
// Note: please avoid adding other feature gates where possible
|
||||||
#![warn(rust_2018_idioms)]
|
#![warn(rust_2018_idioms)]
|
||||||
@ -189,7 +189,7 @@ impl CodegenBackend for CraneliftCodegenBackend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn target_features(&self, _sess: &Session, _allow_unstable: bool) -> Vec<rustc_span::Symbol> {
|
fn target_features(&self, _sess: &Session, _allow_unstable: bool) -> Vec<rustc_span::Symbol> {
|
||||||
vec![]
|
vec![] // FIXME necessary for #[cfg(target_feature]
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_version(&self) {
|
fn print_version(&self) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user