c8-stream-rhel_next
imports/c8-stream-rhel_next/rust-1.77.2-1.module_el8+1042+772fabbd
parent
20f81c61c8
commit
b3a3f77e70
@ -1,2 +1,2 @@
|
||||
SOURCES/rustc-1.76.0-src.tar.xz
|
||||
SOURCES/rustc-1.77.2-src.tar.xz
|
||||
SOURCES/wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz
|
||||
|
@ -1,2 +1,2 @@
|
||||
755339e8131d618d3c1095a581f27afc573ad310 SOURCES/rustc-1.76.0-src.tar.xz
|
||||
5322a4b9998da429eef3a7e07efb5f1f2513b87a SOURCES/rustc-1.77.2-src.tar.xz
|
||||
124d114ffb627ada36bfa1df0216bcea0f55a15e SOURCES/wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz
|
||||
|
@ -0,0 +1,51 @@
|
||||
From fb4d9ee194e4e6488dcbf9a7e4e16bb1e65ce5f2 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <jistone@redhat.com>
|
||||
Date: Mon, 8 Apr 2024 15:04:44 -0700
|
||||
Subject: [PATCH] Fix UI tests with dist-vendored dependencies
|
||||
|
||||
There is already a workaround in `compiletest` to deal with custom
|
||||
`CARGO_HOME` using `-Zignore-directory-in-diagnostics-source-blocks={}`.
|
||||
A similar need exists when dependencies come from the local `vendor`
|
||||
directory, which distro builds often use, so now we ignore that too.
|
||||
|
||||
Also, `issue-21763.rs` was normalizing `hashbrown-` paths, presumably
|
||||
expecting a version suffix, but the vendored path doesn't include the
|
||||
version. Now that matches `[\\/]hashbrown` instead.
|
||||
|
||||
(cherry picked from commit f7b2e37f7232540d9f2b2dc6e33597fbb74f4f63)
|
||||
---
|
||||
src/tools/compiletest/src/runtest.rs | 5 +++++
|
||||
tests/ui/issues/issue-21763.rs | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs
|
||||
index 8be4def15ded..644775c0385c 100644
|
||||
--- a/src/tools/compiletest/src/runtest.rs
|
||||
+++ b/src/tools/compiletest/src/runtest.rs
|
||||
@@ -2362,6 +2362,11 @@ fn make_compile_args(
|
||||
"ignore-directory-in-diagnostics-source-blocks={}",
|
||||
home::cargo_home().expect("failed to find cargo home").to_str().unwrap()
|
||||
));
|
||||
+ // Similarly, vendored sources shouldn't be shown when running from a dist tarball.
|
||||
+ rustc.arg("-Z").arg(format!(
|
||||
+ "ignore-directory-in-diagnostics-source-blocks={}",
|
||||
+ self.config.find_rust_src_root().unwrap().join("vendor").display(),
|
||||
+ ));
|
||||
|
||||
// Optionally prevent default --sysroot if specified in test compile-flags.
|
||||
if !self.props.compile_flags.iter().any(|flag| flag.starts_with("--sysroot"))
|
||||
diff --git a/tests/ui/issues/issue-21763.rs b/tests/ui/issues/issue-21763.rs
|
||||
index 38103ff4f9c8..cc1a00687b30 100644
|
||||
--- a/tests/ui/issues/issue-21763.rs
|
||||
+++ b/tests/ui/issues/issue-21763.rs
|
||||
@@ -1,6 +1,6 @@
|
||||
// Regression test for HashMap only impl'ing Send/Sync if its contents do
|
||||
|
||||
-// normalize-stderr-test: "\S+hashbrown-\S+" -> "$$HASHBROWN_SRC_LOCATION"
|
||||
+// normalize-stderr-test: "\S+[\\/]hashbrown\S+" -> "$$HASHBROWN_SRC_LOCATION"
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::rc::Rc;
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,26 @@
|
||||
From 9a5034a20ed8b055dc615271f9d9cf27f9e494f0 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Rousskov <mark.simulacrum@gmail.com>
|
||||
Date: Mon, 5 Feb 2024 07:34:48 -0500
|
||||
Subject: [PATCH] Step all bootstrap cfgs forward
|
||||
|
||||
This also takes care of other bootstrap-related changes.
|
||||
---
|
||||
src/tools/coverage-dump/src/covfun.rs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/tools/coverage-dump/src/covfun.rs b/src/tools/coverage-dump/src/covfun.rs
|
||||
index 3a5866dea3e0..49e3a6ed5838 100644
|
||||
--- a/src/tools/coverage-dump/src/covfun.rs
|
||||
+++ b/src/tools/coverage-dump/src/covfun.rs
|
||||
@@ -219,7 +219,7 @@ pub(crate) fn decode(input: u32) -> Option<Self> {
|
||||
enum MappingKind {
|
||||
Code(CovTerm),
|
||||
Gap(CovTerm),
|
||||
- Expansion(u32),
|
||||
+ Expansion(#[allow(dead_code)] u32),
|
||||
Skip,
|
||||
// Using raw identifiers here makes the dump output a little bit nicer
|
||||
// (via the derived Debug), at the expense of making this tool's source
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,233 @@
|
||||
From 29ed7749a3a0e4399b91b3d4198891a4d861f105 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <cuviper@gmail.com>
|
||||
Date: Tue, 16 Apr 2024 16:45:59 -0700
|
||||
Subject: [PATCH] The `multiple_unsafe_ops_per_block` test needs `asm!`
|
||||
|
||||
(cherry picked from commit 245fbeef49c2395471498d20e67f4edf4222c865)
|
||||
---
|
||||
tests/ui/multiple_unsafe_ops_per_block.rs | 1 +
|
||||
tests/ui/multiple_unsafe_ops_per_block.stderr | 58 +++++++++----------
|
||||
2 files changed, 30 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/tests/ui/multiple_unsafe_ops_per_block.rs b/tests/ui/multiple_unsafe_ops_per_block.rs
|
||||
index 8afb4df20af4..6b8a103d4a94 100644
|
||||
--- a/tests/ui/multiple_unsafe_ops_per_block.rs
|
||||
+++ b/tests/ui/multiple_unsafe_ops_per_block.rs
|
||||
@@ -1,3 +1,4 @@
|
||||
+//@needs-asm-support
|
||||
//@aux-build:proc_macros.rs
|
||||
#![allow(unused)]
|
||||
#![allow(deref_nullptr)]
|
||||
diff --git a/tests/ui/multiple_unsafe_ops_per_block.stderr b/tests/ui/multiple_unsafe_ops_per_block.stderr
|
||||
index 4803a5089ab2..f9b22c68ddb1 100644
|
||||
--- a/tests/ui/multiple_unsafe_ops_per_block.stderr
|
||||
+++ b/tests/ui/multiple_unsafe_ops_per_block.stderr
|
||||
@@ -1,5 +1,5 @@
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:36:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:37:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | STATIC += 1;
|
||||
@@ -8,12 +8,12 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: modification of a mutable static occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:37:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:38:9
|
||||
|
|
||||
LL | STATIC += 1;
|
||||
| ^^^^^^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:38:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:39:9
|
||||
|
|
||||
LL | not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@@ -21,7 +21,7 @@ LL | not_very_safe();
|
||||
= help: to override `-D warnings` add `#[allow(clippy::multiple_unsafe_ops_per_block)]`
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:45:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:46:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | drop(u.u);
|
||||
@@ -30,18 +30,18 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: union field access occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:46:14
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:47:14
|
||||
|
|
||||
LL | drop(u.u);
|
||||
| ^^^
|
||||
note: raw pointer dereference occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:47:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:48:9
|
||||
|
|
||||
LL | *raw_ptr();
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 3 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:52:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:53:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | asm!("nop");
|
||||
@@ -51,23 +51,23 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: inline assembly used here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:53:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:54:9
|
||||
|
|
||||
LL | asm!("nop");
|
||||
| ^^^^^^^^^^^
|
||||
note: unsafe method call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:54:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:55:9
|
||||
|
|
||||
LL | sample.not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: modification of a mutable static occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:55:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:56:9
|
||||
|
|
||||
LL | STATIC = 0;
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 6 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:61:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:62:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | drop(u.u);
|
||||
@@ -79,55 +79,55 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: union field access occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:62:14
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:63:14
|
||||
|
|
||||
LL | drop(u.u);
|
||||
| ^^^
|
||||
note: access of a mutable static occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:63:14
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:64:14
|
||||
|
|
||||
LL | drop(STATIC);
|
||||
| ^^^^^^
|
||||
note: unsafe method call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:64:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:65:9
|
||||
|
|
||||
LL | sample.not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:65:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:66:9
|
||||
|
|
||||
LL | not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^
|
||||
note: raw pointer dereference occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:66:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:67:9
|
||||
|
|
||||
LL | *raw_ptr();
|
||||
| ^^^^^^^^^^
|
||||
note: inline assembly used here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:67:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:68:9
|
||||
|
|
||||
LL | asm!("nop");
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:5
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:14
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:14
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: raw pointer dereference occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:39
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:39
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:123:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:124:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | x();
|
||||
@@ -136,18 +136,18 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:124:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:125:9
|
||||
|
|
||||
LL | x();
|
||||
| ^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:125:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:126:9
|
||||
|
|
||||
LL | x();
|
||||
| ^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:134:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:135:9
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | T::X();
|
||||
@@ -156,18 +156,18 @@ LL | | }
|
||||
| |_________^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:135:13
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:136:13
|
||||
|
|
||||
LL | T::X();
|
||||
| ^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:136:13
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:137:13
|
||||
|
|
||||
LL | T::X();
|
||||
| ^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:144:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:145:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | x.0();
|
||||
@@ -176,12 +176,12 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:145:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:146:9
|
||||
|
|
||||
LL | x.0();
|
||||
| ^^^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:146:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:147:9
|
||||
|
|
||||
LL | x.0();
|
||||
| ^^^^^
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,200 @@
|
||||
From 56942ed6d13d330facddbd71470a3c115a3fe0d1 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <jistone@redhat.com>
|
||||
Date: Fri, 5 Apr 2024 15:07:58 -0700
|
||||
Subject: [PATCH] bootstrap: move all of rustc's flags to `rustc_cargo`
|
||||
|
||||
This ensures that `RUSTFLAGS` will be consistent between all modes of
|
||||
building the compiler, so they won't trigger a rebuild by cargo. This
|
||||
kind of fix was started in #119414 just for LTO flags, but it's
|
||||
applicable to all kinds of flags that might be configured.
|
||||
|
||||
(cherry picked from commit e8fb8c36ca0de817b3d30f603d6d6b3c56e8b0be)
|
||||
---
|
||||
src/bootstrap/src/core/build_steps/check.rs | 2 +-
|
||||
src/bootstrap/src/core/build_steps/compile.rs | 107 +++++++++---------
|
||||
src/bootstrap/src/core/build_steps/doc.rs | 2 +-
|
||||
src/bootstrap/src/core/build_steps/test.rs | 2 +-
|
||||
4 files changed, 59 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/src/bootstrap/src/core/build_steps/check.rs b/src/bootstrap/src/core/build_steps/check.rs
|
||||
index 5f0afdb1b36c..dd866c2eb0f3 100644
|
||||
--- a/src/bootstrap/src/core/build_steps/check.rs
|
||||
+++ b/src/bootstrap/src/core/build_steps/check.rs
|
||||
@@ -263,7 +263,7 @@ fn run(self, builder: &Builder<'_>) {
|
||||
target,
|
||||
cargo_subcommand(builder.kind),
|
||||
);
|
||||
- rustc_cargo(builder, &mut cargo, target, compiler.stage);
|
||||
+ rustc_cargo(builder, &mut cargo, target, &compiler);
|
||||
|
||||
// For ./x.py clippy, don't run with --all-targets because
|
||||
// linting tests and benchmarks can produce very noisy results
|
||||
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
|
||||
index ddbe18ab8388..607a658617b5 100644
|
||||
--- a/src/bootstrap/src/core/build_steps/compile.rs
|
||||
+++ b/src/bootstrap/src/core/build_steps/compile.rs
|
||||
@@ -898,55 +898,10 @@ fn run(self, builder: &Builder<'_>) -> u32 {
|
||||
));
|
||||
|
||||
let mut cargo = builder.cargo(compiler, Mode::Rustc, SourceType::InTree, target, "build");
|
||||
- rustc_cargo(builder, &mut cargo, target, compiler.stage);
|
||||
+ rustc_cargo(builder, &mut cargo, target, &compiler);
|
||||
|
||||
- if builder.config.rust_profile_use.is_some()
|
||||
- && builder.config.rust_profile_generate.is_some()
|
||||
- {
|
||||
- panic!("Cannot use and generate PGO profiles at the same time");
|
||||
- }
|
||||
-
|
||||
- // With LLD, we can use ICF (identical code folding) to reduce the executable size
|
||||
- // of librustc_driver/rustc and to improve i-cache utilization.
|
||||
- //
|
||||
- // -Wl,[link options] doesn't work on MSVC. However, /OPT:ICF (technically /OPT:REF,ICF)
|
||||
- // is already on by default in MSVC optimized builds, which is interpreted as --icf=all:
|
||||
- // https://github.com/llvm/llvm-project/blob/3329cec2f79185bafd678f310fafadba2a8c76d2/lld/COFF/Driver.cpp#L1746
|
||||
- // https://github.com/rust-lang/rust/blob/f22819bcce4abaff7d1246a56eec493418f9f4ee/compiler/rustc_codegen_ssa/src/back/linker.rs#L827
|
||||
- if builder.config.lld_mode.is_used() && !compiler.host.is_msvc() {
|
||||
- cargo.rustflag("-Clink-args=-Wl,--icf=all");
|
||||
- }
|
||||
-
|
||||
- let is_collecting = if let Some(path) = &builder.config.rust_profile_generate {
|
||||
- if compiler.stage == 1 {
|
||||
- cargo.rustflag(&format!("-Cprofile-generate={path}"));
|
||||
- // Apparently necessary to avoid overflowing the counters during
|
||||
- // a Cargo build profile
|
||||
- cargo.rustflag("-Cllvm-args=-vp-counters-per-site=4");
|
||||
- true
|
||||
- } else {
|
||||
- false
|
||||
- }
|
||||
- } else if let Some(path) = &builder.config.rust_profile_use {
|
||||
- if compiler.stage == 1 {
|
||||
- cargo.rustflag(&format!("-Cprofile-use={path}"));
|
||||
- if builder.is_verbose() {
|
||||
- cargo.rustflag("-Cllvm-args=-pgo-warn-missing-function");
|
||||
- }
|
||||
- true
|
||||
- } else {
|
||||
- false
|
||||
- }
|
||||
- } else {
|
||||
- false
|
||||
- };
|
||||
- if is_collecting {
|
||||
- // Ensure paths to Rust sources are relative, not absolute.
|
||||
- cargo.rustflag(&format!(
|
||||
- "-Cllvm-args=-static-func-strip-dirname-prefix={}",
|
||||
- builder.config.src.components().count()
|
||||
- ));
|
||||
- }
|
||||
+ // NB: all RUSTFLAGS should be added to `rustc_cargo()` so they will be
|
||||
+ // consistently applied by check/doc/test modes too.
|
||||
|
||||
for krate in &*self.crates {
|
||||
cargo.arg("-p").arg(krate);
|
||||
@@ -997,7 +952,12 @@ fn run(self, builder: &Builder<'_>) -> u32 {
|
||||
}
|
||||
}
|
||||
|
||||
-pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelection, stage: u32) {
|
||||
+pub fn rustc_cargo(
|
||||
+ builder: &Builder<'_>,
|
||||
+ cargo: &mut Cargo,
|
||||
+ target: TargetSelection,
|
||||
+ compiler: &Compiler,
|
||||
+) {
|
||||
cargo
|
||||
.arg("--features")
|
||||
.arg(builder.rustc_features(builder.kind))
|
||||
@@ -1008,7 +968,7 @@ pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelec
|
||||
|
||||
// We currently don't support cross-crate LTO in stage0. This also isn't hugely necessary
|
||||
// and may just be a time sink.
|
||||
- if stage != 0 {
|
||||
+ if compiler.stage != 0 {
|
||||
match builder.config.rust_lto {
|
||||
RustcLto::Thin | RustcLto::Fat => {
|
||||
// Since using LTO for optimizing dylibs is currently experimental,
|
||||
@@ -1034,7 +994,52 @@ pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelec
|
||||
cargo.rustflag("-Clto=off");
|
||||
}
|
||||
|
||||
- rustc_cargo_env(builder, cargo, target, stage);
|
||||
+ // With LLD, we can use ICF (identical code folding) to reduce the executable size
|
||||
+ // of librustc_driver/rustc and to improve i-cache utilization.
|
||||
+ //
|
||||
+ // -Wl,[link options] doesn't work on MSVC. However, /OPT:ICF (technically /OPT:REF,ICF)
|
||||
+ // is already on by default in MSVC optimized builds, which is interpreted as --icf=all:
|
||||
+ // https://github.com/llvm/llvm-project/blob/3329cec2f79185bafd678f310fafadba2a8c76d2/lld/COFF/Driver.cpp#L1746
|
||||
+ // https://github.com/rust-lang/rust/blob/f22819bcce4abaff7d1246a56eec493418f9f4ee/compiler/rustc_codegen_ssa/src/back/linker.rs#L827
|
||||
+ if builder.config.lld_mode.is_used() && !compiler.host.is_msvc() {
|
||||
+ cargo.rustflag("-Clink-args=-Wl,--icf=all");
|
||||
+ }
|
||||
+
|
||||
+ if builder.config.rust_profile_use.is_some() && builder.config.rust_profile_generate.is_some() {
|
||||
+ panic!("Cannot use and generate PGO profiles at the same time");
|
||||
+ }
|
||||
+ let is_collecting = if let Some(path) = &builder.config.rust_profile_generate {
|
||||
+ if compiler.stage == 1 {
|
||||
+ cargo.rustflag(&format!("-Cprofile-generate={path}"));
|
||||
+ // Apparently necessary to avoid overflowing the counters during
|
||||
+ // a Cargo build profile
|
||||
+ cargo.rustflag("-Cllvm-args=-vp-counters-per-site=4");
|
||||
+ true
|
||||
+ } else {
|
||||
+ false
|
||||
+ }
|
||||
+ } else if let Some(path) = &builder.config.rust_profile_use {
|
||||
+ if compiler.stage == 1 {
|
||||
+ cargo.rustflag(&format!("-Cprofile-use={path}"));
|
||||
+ if builder.is_verbose() {
|
||||
+ cargo.rustflag("-Cllvm-args=-pgo-warn-missing-function");
|
||||
+ }
|
||||
+ true
|
||||
+ } else {
|
||||
+ false
|
||||
+ }
|
||||
+ } else {
|
||||
+ false
|
||||
+ };
|
||||
+ if is_collecting {
|
||||
+ // Ensure paths to Rust sources are relative, not absolute.
|
||||
+ cargo.rustflag(&format!(
|
||||
+ "-Cllvm-args=-static-func-strip-dirname-prefix={}",
|
||||
+ builder.config.src.components().count()
|
||||
+ ));
|
||||
+ }
|
||||
+
|
||||
+ rustc_cargo_env(builder, cargo, target, compiler.stage);
|
||||
}
|
||||
|
||||
pub fn rustc_cargo_env(
|
||||
diff --git a/src/bootstrap/src/core/build_steps/doc.rs b/src/bootstrap/src/core/build_steps/doc.rs
|
||||
index 57e63927c95e..e10035f07c05 100644
|
||||
--- a/src/bootstrap/src/core/build_steps/doc.rs
|
||||
+++ b/src/bootstrap/src/core/build_steps/doc.rs
|
||||
@@ -794,7 +794,7 @@ fn run(self, builder: &Builder<'_>) {
|
||||
cargo.rustdocflag("-Znormalize-docs");
|
||||
cargo.rustdocflag("--show-type-layout");
|
||||
cargo.rustdocflag("--generate-link-to-definition");
|
||||
- compile::rustc_cargo(builder, &mut cargo, target, compiler.stage);
|
||||
+ compile::rustc_cargo(builder, &mut cargo, target, &compiler);
|
||||
cargo.arg("-Zunstable-options");
|
||||
cargo.arg("-Zskip-rustdoc-fingerprint");
|
||||
|
||||
diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs
|
||||
index 04728e2e00dc..c4fdda0a2606 100644
|
||||
--- a/src/bootstrap/src/core/build_steps/test.rs
|
||||
+++ b/src/bootstrap/src/core/build_steps/test.rs
|
||||
@@ -2558,7 +2558,7 @@ fn run(self, builder: &Builder<'_>) {
|
||||
}
|
||||
}
|
||||
Mode::Rustc => {
|
||||
- compile::rustc_cargo(builder, &mut cargo, target, compiler.stage);
|
||||
+ compile::rustc_cargo(builder, &mut cargo, target, &compiler);
|
||||
}
|
||||
_ => panic!("can only test libraries"),
|
||||
};
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,82 @@
|
||||
From 96e7b2767b30c215361d26626ef235f5ec0e8cd5 Mon Sep 17 00:00:00 2001
|
||||
From: Ralf Jung <post@ralfj.de>
|
||||
Date: Fri, 16 Feb 2024 10:01:43 +0100
|
||||
Subject: [PATCH] remove stderr-per-bitwidth from some tests
|
||||
|
||||
(cherry picked from commit f68e79dcac3acb635c58ff2fa4178b9a0b040fe4)
|
||||
---
|
||||
...ut_ref_in_final_dynamic_check.64bit.stderr | 20 -------------------
|
||||
.../mut_ref_in_final_dynamic_check.rs | 3 ++-
|
||||
... => mut_ref_in_final_dynamic_check.stderr} | 8 ++++----
|
||||
3 files changed, 6 insertions(+), 25 deletions(-)
|
||||
delete mode 100644 tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
|
||||
rename tests/ui/consts/const-mut-refs/{mut_ref_in_final_dynamic_check.32bit.stderr => mut_ref_in_final_dynamic_check.stderr} (75%)
|
||||
|
||||
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
|
||||
deleted file mode 100644
|
||||
index fc68207512c0..000000000000
|
||||
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
|
||||
+++ /dev/null
|
||||
@@ -1,20 +0,0 @@
|
||||
-error[E0080]: it is undefined behavior to use this value
|
||||
- --> $DIR/mut_ref_in_final_dynamic_check.rs:15:1
|
||||
- |
|
||||
-LL | const A: Option<&mut i32> = helper();
|
||||
- | ^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<enum-variant(Some)>.0: encountered mutable reference in a `const` or `static`
|
||||
- |
|
||||
- = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
|
||||
- = note: the raw bytes of the constant (size: 8, align: 8) {
|
||||
- 2a 00 00 00 00 00 00 00 │ *.......
|
||||
- }
|
||||
-
|
||||
-error: encountered dangling pointer in final value of constant
|
||||
- --> $DIR/mut_ref_in_final_dynamic_check.rs:22:1
|
||||
- |
|
||||
-LL | const B: Option<&mut i32> = helper2();
|
||||
- | ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
-
|
||||
-error: aborting due to 2 previous errors
|
||||
-
|
||||
-For more information about this error, try `rustc --explain E0080`.
|
||||
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
|
||||
index 455b557b97c4..b98f4d920694 100644
|
||||
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
|
||||
+++ b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
|
||||
@@ -1,4 +1,5 @@
|
||||
-// stderr-per-bitwidth
|
||||
+// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)"
|
||||
+// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*ALLOC[0-9]+(\+[a-z0-9]+)?(<imm>)?─*╼ )+ *│.*" -> "HEX_DUMP"
|
||||
#![feature(const_mut_refs)]
|
||||
#![feature(raw_ref_op)]
|
||||
|
||||
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
|
||||
similarity index 75%
|
||||
rename from tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr
|
||||
rename to tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
|
||||
index 87420a037514..bb3c5518680b 100644
|
||||
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr
|
||||
+++ b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
|
||||
@@ -1,16 +1,16 @@
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
- --> $DIR/mut_ref_in_final_dynamic_check.rs:15:1
|
||||
+ --> $DIR/mut_ref_in_final_dynamic_check.rs:16:1
|
||||
|
|
||||
LL | const A: Option<&mut i32> = helper();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<enum-variant(Some)>.0: encountered mutable reference in a `const` or `static`
|
||||
|
|
||||
= note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
|
||||
- = note: the raw bytes of the constant (size: 4, align: 4) {
|
||||
- 2a 00 00 00 │ *...
|
||||
+ = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) {
|
||||
+ HEX_DUMP
|
||||
}
|
||||
|
||||
error: encountered dangling pointer in final value of constant
|
||||
- --> $DIR/mut_ref_in_final_dynamic_check.rs:22:1
|
||||
+ --> $DIR/mut_ref_in_final_dynamic_check.rs:23:1
|
||||
|
|
||||
LL | const B: Option<&mut i32> = helper2();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,185 @@
|
||||
From ed8e223cc58103cae0586351fd9113a727523cab Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <jistone@redhat.com>
|
||||
Date: Thu, 11 Apr 2024 14:58:42 -0700
|
||||
Subject: [PATCH] test: don't compress test registry crates
|
||||
|
||||
They are still nominally gzipped, but using `Compression::none()` makes
|
||||
them consistent even across zlib and zlib-ng, and this fixes checksum
|
||||
differences in the testsuite. There is a one-time update of all those
|
||||
checksums to catch up with this change though.
|
||||
|
||||
(cherry picked from commit a70f23c50b61c1a3335f2943375a04ae7abf2fa4)
|
||||
---
|
||||
crates/cargo-test-support/src/registry.rs | 2 +-
|
||||
tests/testsuite/alt_registry.rs | 2 +-
|
||||
.../cargo_add/locked_unchanged/in/Cargo.lock | 2 +-
|
||||
.../cargo_add/lockfile_updated/in/Cargo.lock | 2 +-
|
||||
.../cargo_add/lockfile_updated/out/Cargo.lock | 4 ++--
|
||||
.../cargo_remove/update_lock_file/in/Cargo.lock | 16 ++++++++--------
|
||||
.../cargo_remove/update_lock_file/out/Cargo.lock | 12 ++++++------
|
||||
7 files changed, 20 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/crates/cargo-test-support/src/registry.rs b/crates/cargo-test-support/src/registry.rs
|
||||
index cc51707dbbf9..e27d1e354d7b 100644
|
||||
--- a/crates/cargo-test-support/src/registry.rs
|
||||
+++ b/crates/cargo-test-support/src/registry.rs
|
||||
@@ -1469,7 +1469,7 @@ impl Package {
|
||||
let dst = self.archive_dst();
|
||||
t!(fs::create_dir_all(dst.parent().unwrap()));
|
||||
let f = t!(File::create(&dst));
|
||||
- let mut a = Builder::new(GzEncoder::new(f, Compression::default()));
|
||||
+ let mut a = Builder::new(GzEncoder::new(f, Compression::none()));
|
||||
|
||||
if !self
|
||||
.files
|
||||
diff --git a/tests/testsuite/alt_registry.rs b/tests/testsuite/alt_registry.rs
|
||||
index f286dc018122..42b818493244 100644
|
||||
--- a/tests/testsuite/alt_registry.rs
|
||||
+++ b/tests/testsuite/alt_registry.rs
|
||||
@@ -1466,7 +1466,7 @@ dependencies = [
|
||||
name = "foo"
|
||||
version = "0.1.0"
|
||||
source = "sparse+http://[..]/"
|
||||
-checksum = "f6a200a9339fef960979d94d5c99cbbfd899b6f5a396a55d9775089119050203""#,
|
||||
+checksum = "458c1addb23fde7dfbca0410afdbcc0086f96197281ec304d9e0e10def3cb899""#,
|
||||
);
|
||||
}
|
||||
|
||||
diff --git a/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock b/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
|
||||
index 011b335926ee..b88709a9e9be 100644
|
||||
--- a/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
|
||||
@@ -13,4 +13,4 @@ dependencies = [
|
||||
name = "my-package"
|
||||
version = "99999.0.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "62c45acf9e11d2f97f5b318143219c0b4102eafef1c22a4b545b47104691d915"
|
||||
+checksum = "73cfa03cf28feb001362b377a837910c5a6ec1cc5cceaa562b97fc14d15edec8"
|
||||
diff --git a/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock b/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
|
||||
index d9bcc988d3f2..d8fa962f3069 100644
|
||||
--- a/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
|
||||
@@ -14,4 +14,4 @@ dependencies = [
|
||||
name = "unrelateed-crate"
|
||||
version = "0.2.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "266de4849a570b5dfda5e8e082a2aff885e9d2d4965dae8f8b6c8535e1ec731f"
|
||||
+checksum = "b16af1a8ba7e4331ca62d945483a3028c2afbbe06a7f2ffaa0a3538ef0a7d63e"
|
||||
diff --git a/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock b/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
|
||||
index 4b5fb465f104..e423b3d1f8b7 100644
|
||||
--- a/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
|
||||
@@ -14,10 +14,10 @@ dependencies = [
|
||||
name = "my-package"
|
||||
version = "99999.0.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "62c45acf9e11d2f97f5b318143219c0b4102eafef1c22a4b545b47104691d915"
|
||||
+checksum = "73cfa03cf28feb001362b377a837910c5a6ec1cc5cceaa562b97fc14d15edec8"
|
||||
|
||||
[[package]]
|
||||
name = "unrelateed-crate"
|
||||
version = "0.2.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "266de4849a570b5dfda5e8e082a2aff885e9d2d4965dae8f8b6c8535e1ec731f"
|
||||
+checksum = "b16af1a8ba7e4331ca62d945483a3028c2afbbe06a7f2ffaa0a3538ef0a7d63e"
|
||||
diff --git a/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock b/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
|
||||
index 2302220f2fb7..a4018e70eb47 100644
|
||||
--- a/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
|
||||
@@ -19,40 +19,40 @@ dependencies = [
|
||||
name = "clippy"
|
||||
version = "0.4.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "47ced0eda54e9ddc6063f0e1d0164493cd16c84c6b6a0329a536967c44e205f7"
|
||||
+checksum = "e95568c5ce98de9c470c1d9b387466f4d5efa9687d3af7998e7c9c1da5e399fb"
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
version = "0.6.2+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "b600540c4fafb27bf6e6961f0f1e6f547c9d6126ce581ab3a92f878c8e2c9a2c"
|
||||
+checksum = "d4414d2705e6b42fe10772b4ab4e3260f362669e45606eb562dc4c0023e911f6"
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "0.1.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "84949cb53285a6c481d0133065a7b669871acfd9e20f273f4ce1283c309775d5"
|
||||
+checksum = "bc4552a1d503f3a436bb18d1efff62eb95bd97f724d06466c55ef151ea2de9e0"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-serialize"
|
||||
-version = "0.4.1+my-package"
|
||||
+version = "0.4.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "31162e7d23a085553c42dee375787b451a481275473f7779c4a63bcc267a24fd"
|
||||
+checksum = "48c3645ec42f69a343fbe9734a477ae59448192e779206dbcb1a9c3397563fd8"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "106bee742e3199d9e59f4269e458dfc825c1b4648c483b1c2b7a45cd2610a308"
|
||||
+checksum = "20070289360e74dcdc28f437b08dda0c0c861c2328d749bb0d6e1a428013af83"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.90"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "be7d269f612a60e3c2c4a4a120e2d878a3f3298a5285eda6e95453905a107d9a"
|
||||
+checksum = "ba76b226746eabf28375d5ad184926bbb9cd727425c8d027ea10f6c508895c6c"
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.1.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "a0f6c7804525ce0a968ef270e55a516cf4bdcf1fea0b09d130e0aa34a66745b3"
|
||||
+checksum = "a9ea5fa6eaed7d7e6d9fb4571bb9d915b577e19bf2a95321ebb70fd3d894ce49"
|
||||
diff --git a/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock b/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
|
||||
index 0946cee47717..af60414ddad2 100644
|
||||
--- a/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
|
||||
@@ -18,34 +18,34 @@ dependencies = [
|
||||
name = "clippy"
|
||||
version = "0.4.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "47ced0eda54e9ddc6063f0e1d0164493cd16c84c6b6a0329a536967c44e205f7"
|
||||
+checksum = "e95568c5ce98de9c470c1d9b387466f4d5efa9687d3af7998e7c9c1da5e399fb"
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
version = "0.6.2+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "b600540c4fafb27bf6e6961f0f1e6f547c9d6126ce581ab3a92f878c8e2c9a2c"
|
||||
+checksum = "d4414d2705e6b42fe10772b4ab4e3260f362669e45606eb562dc4c0023e911f6"
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "0.1.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "84949cb53285a6c481d0133065a7b669871acfd9e20f273f4ce1283c309775d5"
|
||||
+checksum = "bc4552a1d503f3a436bb18d1efff62eb95bd97f724d06466c55ef151ea2de9e0"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "106bee742e3199d9e59f4269e458dfc825c1b4648c483b1c2b7a45cd2610a308"
|
||||
+checksum = "20070289360e74dcdc28f437b08dda0c0c861c2328d749bb0d6e1a428013af83"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.90"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "be7d269f612a60e3c2c4a4a120e2d878a3f3298a5285eda6e95453905a107d9a"
|
||||
+checksum = "ba76b226746eabf28375d5ad184926bbb9cd727425c8d027ea10f6c508895c6c"
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.1.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "a0f6c7804525ce0a968ef270e55a516cf4bdcf1fea0b09d130e0aa34a66745b3"
|
||||
+checksum = "a9ea5fa6eaed7d7e6d9fb4571bb9d915b577e19bf2a95321ebb70fd3d894ce49"
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,62 @@
|
||||
From 8eb48b4f4c6e3d48f2600159a75184ec4d74b249 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Popov <npopov@redhat.com>
|
||||
Date: Wed, 31 Jan 2024 15:08:08 +0100
|
||||
Subject: [PATCH] Update data layouts in custom target tests for LLVM 18
|
||||
|
||||
Fixes https://github.com/rust-lang/rust/issues/120492.
|
||||
---
|
||||
tests/run-make/rust-lld-custom-target/custom-target.json | 2 +-
|
||||
tests/run-make/rustdoc-target-spec-json-path/target.json | 2 +-
|
||||
tests/run-make/target-specs/my-awesome-platform.json | 2 +-
|
||||
.../target-specs/my-x86_64-unknown-linux-gnu-platform.json | 2 +-
|
||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/tests/run-make/rust-lld-custom-target/custom-target.json b/tests/run-make/rust-lld-custom-target/custom-target.json
|
||||
index 7828a99f235c1..e2c64cbdb43c2 100644
|
||||
--- a/tests/run-make/rust-lld-custom-target/custom-target.json
|
||||
+++ b/tests/run-make/rust-lld-custom-target/custom-target.json
|
||||
@@ -2,7 +2,7 @@
|
||||
"arch": "x86_64",
|
||||
"cpu": "x86-64",
|
||||
"crt-static-respected": true,
|
||||
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
|
||||
+ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
|
||||
"dynamic-linking": true,
|
||||
"env": "gnu",
|
||||
"has-rpath": true,
|
||||
diff --git a/tests/run-make/rustdoc-target-spec-json-path/target.json b/tests/run-make/rustdoc-target-spec-json-path/target.json
|
||||
index 34357182c205e..c478f1196fae0 100644
|
||||
--- a/tests/run-make/rustdoc-target-spec-json-path/target.json
|
||||
+++ b/tests/run-make/rustdoc-target-spec-json-path/target.json
|
||||
@@ -2,7 +2,7 @@
|
||||
"arch": "x86_64",
|
||||
"cpu": "x86-64",
|
||||
"crt-static-respected": true,
|
||||
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
|
||||
+ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
|
||||
"dynamic-linking": true,
|
||||
"env": "gnu",
|
||||
"executables": true,
|
||||
diff --git a/tests/run-make/target-specs/my-awesome-platform.json b/tests/run-make/target-specs/my-awesome-platform.json
|
||||
index 00de3de05f07a..1673ef7bd54d1 100644
|
||||
--- a/tests/run-make/target-specs/my-awesome-platform.json
|
||||
+++ b/tests/run-make/target-specs/my-awesome-platform.json
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
- "data-layout": "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128",
|
||||
+ "data-layout": "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128",
|
||||
"linker-flavor": "gcc",
|
||||
"llvm-target": "i686-unknown-linux-gnu",
|
||||
"target-endian": "little",
|
||||
diff --git a/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json b/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
|
||||
index 6d5e964ed4fee..0cafce15a9fef 100644
|
||||
--- a/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
|
||||
+++ b/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"pre-link-args": {"gcc": ["-m64"]},
|
||||
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
|
||||
+ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
|
||||
"linker-flavor": "gcc",
|
||||
"llvm-target": "x86_64-unknown-linux-gnu",
|
||||
"target-endian": "little",
|
@ -0,0 +1,55 @@
|
||||
From 369fff6c0640fe89be9b915adaa83e66a022e00d Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Popov <npopov@redhat.com>
|
||||
Date: Wed, 14 Feb 2024 16:26:20 +0100
|
||||
Subject: [PATCH] Implicitly enable evex512 if avx512 is enabled
|
||||
|
||||
LLVM 18 requires the evex512 feature to allow use of zmm registers.
|
||||
LLVM automatically sets it when using a generic CPU, but not when
|
||||
`-C target-cpu` is specified. This will result either in backend
|
||||
legalization crashes, or code unexpectedly using ymm instead of
|
||||
zmm registers.
|
||||
|
||||
For now, make sure that `avx512*` features imply `evex512`. Long
|
||||
term we'll probably have to deal with the AVX10 mess somehow.
|
||||
---
|
||||
compiler/rustc_codegen_llvm/src/llvm_util.rs | 4 ++++
|
||||
tests/ui/asm/x86_64/evex512-implicit-feature.rs | 15 +++++++++++++++
|
||||
2 files changed, 19 insertions(+)
|
||||
create mode 100644 tests/ui/asm/x86_64/evex512-implicit-feature.rs
|
||||
|
||||
diff --git a/compiler/rustc_codegen_llvm/src/llvm_util.rs b/compiler/rustc_codegen_llvm/src/llvm_util.rs
|
||||
index e48479c8da279..54e8ed85e3250 100644
|
||||
--- a/compiler/rustc_codegen_llvm/src/llvm_util.rs
|
||||
+++ b/compiler/rustc_codegen_llvm/src/llvm_util.rs
|
||||
@@ -266,6 +266,10 @@ pub fn to_llvm_features<'a>(sess: &Session, s: &'a str) -> LLVMFeature<'a> {
|
||||
("riscv32" | "riscv64", "fast-unaligned-access") if get_version().0 <= 17 => {
|
||||
LLVMFeature::new("unaligned-scalar-mem")
|
||||
}
|
||||
+ // For LLVM 18, enable the evex512 target feature if a avx512 target feature is enabled.
|
||||
+ ("x86", s) if get_version().0 >= 18 && s.starts_with("avx512") => {
|
||||
+ LLVMFeature::with_dependency(s, TargetFeatureFoldStrength::EnableOnly("evex512"))
|
||||
+ }
|
||||
(_, s) => LLVMFeature::new(s),
|
||||
}
|
||||
}
|
||||
diff --git a/tests/ui/asm/x86_64/evex512-implicit-feature.rs b/tests/ui/asm/x86_64/evex512-implicit-feature.rs
|
||||
new file mode 100644
|
||||
index 0000000000000..a15060857eccb
|
||||
--- /dev/null
|
||||
+++ b/tests/ui/asm/x86_64/evex512-implicit-feature.rs
|
||||
@@ -0,0 +1,15 @@
|
||||
+// build-pass
|
||||
+// only-x86_64
|
||||
+// compile-flags: --crate-type=lib -C target-cpu=skylake
|
||||
+
|
||||
+#![feature(avx512_target_feature)]
|
||||
+#![feature(stdsimd)]
|
||||
+
|
||||
+use std::arch::x86_64::*;
|
||||
+
|
||||
+#[target_feature(enable = "avx512f")]
|
||||
+#[no_mangle]
|
||||
+pub unsafe fn test(res: *mut f64, p: *const f64) {
|
||||
+ let arg = _mm512_load_pd(p);
|
||||
+ _mm512_store_pd(res, _mm512_fmaddsub_pd(arg, arg, arg));
|
||||
+}
|
@ -1,42 +0,0 @@
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-01-07 18:12:08.000000000 -0800
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-01-09 15:25:51.519781381 -0800
|
||||
@@ -2071,7 +2071,6 @@
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
- "libssh2-sys",
|
||||
"libz-sys",
|
||||
"openssl-sys",
|
||||
"pkg-config",
|
||||
@@ -2113,20 +2112,6 @@
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
-
|
||||
-[[package]]
|
||||
-name = "libssh2-sys"
|
||||
-version = "0.3.0"
|
||||
-source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
|
||||
-dependencies = [
|
||||
- "cc",
|
||||
- "libc",
|
||||
- "libz-sys",
|
||||
- "openssl-sys",
|
||||
- "pkg-config",
|
||||
- "vcpkg",
|
||||
-]
|
||||
|
||||
[[package]]
|
||||
name = "libz-sys"
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-01-09 15:23:02.369032291 -0800
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-01-09 15:24:44.015679666 -0800
|
||||
@@ -40,7 +40,7 @@
|
||||
curl-sys = "0.4.70"
|
||||
filetime = "0.2.22"
|
||||
flate2 = { version = "1.0.28", default-features = false, features = ["zlib"] }
|
||||
-git2 = "0.18.1"
|
||||
+git2 = { version = "0.18.1", default-features = false, features = ["https"] }
|
||||
git2-curl = "0.19.0"
|
||||
gix = { version = "0.56.0", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "revision"] }
|
||||
gix-features-for-configuration-only = { version = "0.35.0", package = "gix-features", features = [ "parallel" ] }
|
@ -1,21 +0,0 @@
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-01-07 18:12:08.000000000 -0800
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-01-09 15:36:23.808367445 -0800
|
||||
@@ -2109,7 +2109,6 @@
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
|
||||
dependencies = [
|
||||
- "cc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-01-07 18:12:08.000000000 -0800
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-01-09 15:36:18.534437627 -0800
|
||||
@@ -73,7 +73,7 @@
|
||||
pulldown-cmark = { version = "0.9.3", default-features = false }
|
||||
rand = "0.8.5"
|
||||
regex = "1.10.2"
|
||||
-rusqlite = { version = "0.30.0", features = ["bundled"] }
|
||||
+rusqlite = { version = "0.30.0", features = [] }
|
||||
rustfix = { version = "0.7.0", path = "crates/rustfix" }
|
||||
same-file = "1.0.6"
|
||||
security-framework = "2.9.2"
|
@ -0,0 +1,44 @@
|
||||
diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-02-14 14:06:05.881165093 +0100
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-02-14 14:06:27.169456166 +0100
|
||||
@@ -2072,7 +2072,6 @@ checksum = "ee4126d8b4ee5c9d9ea891dd875c
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
- "libssh2-sys",
|
||||
"libz-sys",
|
||||
"openssl-sys",
|
||||
"pkg-config",
|
||||
@@ -2113,20 +2112,6 @@ dependencies = [
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
-
|
||||
-[[package]]
|
||||
-name = "libssh2-sys"
|
||||
-version = "0.3.0"
|
||||
-source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
|
||||
-dependencies = [
|
||||
- "cc",
|
||||
- "libc",
|
||||
- "libz-sys",
|
||||
- "openssl-sys",
|
||||
- "pkg-config",
|
||||
- "vcpkg",
|
||||
-]
|
||||
|
||||
[[package]]
|
||||
name = "libz-sys"
|
||||
diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-02-14 14:06:10.400226884 +0100
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-02-14 14:06:51.225785086 +0100
|
||||
@@ -44,7 +44,7 @@ curl = "0.4.44"
|
||||
curl-sys = "0.4.70"
|
||||
filetime = "0.2.23"
|
||||
flate2 = { version = "1.0.28", default-features = false, features = ["zlib"] }
|
||||
-git2 = "0.18.2"
|
||||
+git2 = { version = "0.18.2", default-features = false, features = ["https"] }
|
||||
git2-curl = "0.19.0"
|
||||
gix = { version = "0.57.1", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "revision"] }
|
||||
gix-features-for-configuration-only = { version = "0.37.1", package = "gix-features", features = [ "parallel" ] }
|
@ -0,0 +1,23 @@
|
||||
diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-02-14 13:00:20.318976752 +0100
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-02-14 13:00:28.447051475 +0100
|
||||
@@ -2110,7 +2110,6 @@ version = "0.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
|
||||
dependencies = [
|
||||
- "cc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-02-14 13:00:14.942927327 +0100
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-02-14 13:00:40.688164017 +0100
|
||||
@@ -77,7 +77,7 @@ proptest = "1.4.0"
|
||||
pulldown-cmark = { version = "0.9.3", default-features = false }
|
||||
rand = "0.8.5"
|
||||
regex = "1.10.2"
|
||||
-rusqlite = { version = "0.30.0", features = ["bundled"] }
|
||||
+rusqlite = { version = "0.30.0", features = [] }
|
||||
rustfix = { version = "0.8.0", path = "crates/rustfix" }
|
||||
same-file = "1.0.6"
|
||||
security-framework = "2.9.2"
|
Loading…
Reference in new issue