Auto merge of #146610 - matthiaskrgr:rollup-xkt5kjz, r=matthiaskrgr
Rollup of 9 pull requests Successful merges: - rust-lang/rust#146344 (tests/codegen-llvm: Make rust-abi-arch-specific-adjustment portable) - rust-lang/rust#146530 (rustc_codegen_llvm: Adjust RISC-V inline assembly's clobber list) - rust-lang/rust#146533 (Note some previous attempts to change the Default impl for `[T; 0]`) - rust-lang/rust#146539 (fix 404 MCP link) - rust-lang/rust#146546 (Switch `std::vec::PeekMut::pop` from self to this parameter.) - rust-lang/rust#146549 (On FreeBSD, use readdir instead of readdir_r) - rust-lang/rust#146559 (Fix typo in error message) - rust-lang/rust#146563 (bootstrap.py: disable incremental build for bootstrap in CI) - rust-lang/rust#146576 (opt-dist: don't set `RUST_LOG=collector=debug`) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
9d82de19df
16 changed files with 107 additions and 88 deletions
1
.mailmap
1
.mailmap
|
|
@ -609,6 +609,7 @@ Shohei Wada <pc@wada314.jp>
|
|||
Shotaro Yamada <sinkuu@sinkuu.xyz>
|
||||
Shotaro Yamada <sinkuu@sinkuu.xyz> <sinkuu@users.noreply.github.com>
|
||||
Shyam Sundar B <shyambaskaran@outlook.com>
|
||||
Sidney Cammeresi <sac@cheesecake.org> <sac@readyset.io>
|
||||
Simon Barber-Dueck <sbarberdueck@gmail.com> Simon BD <simon@server>
|
||||
Simon Sapin <simon@exyr.org> <simon.sapin@exyr.org>
|
||||
Simonas Kazlauskas <git@kazlauskas.me> Simonas Kazlauskas <github@kazlauskas.me>
|
||||
|
|
|
|||
|
|
@ -240,6 +240,7 @@ impl<'ll, 'tcx> AsmBuilderMethods<'tcx> for Builder<'_, 'll, 'tcx> {
|
|||
}
|
||||
InlineAsmArch::RiscV32 | InlineAsmArch::RiscV64 => {
|
||||
constraints.extend_from_slice(&[
|
||||
"~{fflags}".to_string(),
|
||||
"~{vtype}".to_string(),
|
||||
"~{vl}".to_string(),
|
||||
"~{vxsat}".to_string(),
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ middle_failed_writing_file =
|
|||
# Note: We only mention patterns here since the error can only occur with references, and those
|
||||
# are forbidden in const generics.
|
||||
middle_invalid_const_in_valtree = constant {$global_const_id} cannot be used as pattern
|
||||
.note = constants that reference mutable or external memory cannot be used as pattern
|
||||
.note = constants that reference mutable or external memory cannot be used as patterns
|
||||
|
||||
middle_layout_cycle =
|
||||
a cycle occurred during layout computation
|
||||
|
|
|
|||
|
|
@ -29,9 +29,9 @@ impl<'a, T> PeekMut<'a, T> {
|
|||
|
||||
/// Removes the peeked value from the vector and returns it.
|
||||
#[unstable(feature = "vec_peek_mut", issue = "122742")]
|
||||
pub fn pop(self) -> T {
|
||||
pub fn pop(this: Self) -> T {
|
||||
// SAFETY: PeekMut is only constructed if the vec is non-empty
|
||||
unsafe { self.vec.pop().unwrap_unchecked() }
|
||||
unsafe { this.vec.pop().unwrap_unchecked() }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ use std::ops::Bound::*;
|
|||
use std::panic::{AssertUnwindSafe, catch_unwind};
|
||||
use std::rc::Rc;
|
||||
use std::sync::atomic::{AtomicU32, Ordering};
|
||||
use std::vec::{Drain, IntoIter};
|
||||
use std::vec::{Drain, IntoIter, PeekMut};
|
||||
|
||||
use crate::testing::macros::struct_with_counted_drop;
|
||||
|
||||
|
|
@ -2647,7 +2647,7 @@ fn test_peek_mut() {
|
|||
assert_eq!(*p, 2);
|
||||
*p = 0;
|
||||
assert_eq!(*p, 0);
|
||||
p.pop();
|
||||
PeekMut::pop(p);
|
||||
assert_eq!(vec.len(), 1);
|
||||
} else {
|
||||
unreachable!()
|
||||
|
|
|
|||
|
|
@ -472,6 +472,11 @@ impl<T: Copy> SpecArrayClone for T {
|
|||
// The Default impls cannot be done with const generics because `[T; 0]` doesn't
|
||||
// require Default to be implemented, and having different impl blocks for
|
||||
// different numbers isn't supported yet.
|
||||
//
|
||||
// Trying to improve the `[T; 0]` situation has proven to be difficult.
|
||||
// Please see these issues for more context on past attempts and crater runs:
|
||||
// - https://github.com/rust-lang/rust/issues/61415
|
||||
// - https://github.com/rust-lang/rust/pull/145457
|
||||
|
||||
macro_rules! array_impl_default {
|
||||
{$n:expr, $t:ident $($ts:ident)*} => {
|
||||
|
|
|
|||
|
|
@ -21,29 +21,31 @@ use libc::fstatat as fstatat64;
|
|||
#[cfg(any(all(target_os = "linux", not(target_env = "musl")), target_os = "hurd"))]
|
||||
use libc::fstatat64;
|
||||
#[cfg(any(
|
||||
target_os = "android",
|
||||
target_os = "solaris",
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
target_os = "illumos",
|
||||
target_os = "aix",
|
||||
target_os = "android",
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "illumos",
|
||||
target_os = "nto",
|
||||
target_os = "redox",
|
||||
target_os = "solaris",
|
||||
target_os = "vita",
|
||||
all(target_os = "linux", target_env = "musl"),
|
||||
))]
|
||||
use libc::readdir as readdir64;
|
||||
#[cfg(not(any(
|
||||
target_os = "aix",
|
||||
target_os = "android",
|
||||
target_os = "linux",
|
||||
target_os = "solaris",
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "hurd",
|
||||
target_os = "illumos",
|
||||
target_os = "l4re",
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
target_os = "aix",
|
||||
target_os = "linux",
|
||||
target_os = "nto",
|
||||
target_os = "redox",
|
||||
target_os = "solaris",
|
||||
target_os = "vita",
|
||||
target_os = "hurd",
|
||||
)))]
|
||||
use libc::readdir_r as readdir64_r;
|
||||
#[cfg(any(all(target_os = "linux", not(target_env = "musl")), target_os = "hurd"))]
|
||||
|
|
@ -271,16 +273,17 @@ unsafe impl Send for Dir {}
|
|||
unsafe impl Sync for Dir {}
|
||||
|
||||
#[cfg(any(
|
||||
target_os = "android",
|
||||
target_os = "linux",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
target_os = "aix",
|
||||
target_os = "nto",
|
||||
target_os = "vita",
|
||||
target_os = "android",
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "hurd",
|
||||
target_os = "illumos",
|
||||
target_os = "linux",
|
||||
target_os = "nto",
|
||||
target_os = "redox",
|
||||
target_os = "solaris",
|
||||
target_os = "vita",
|
||||
))]
|
||||
pub struct DirEntry {
|
||||
dir: Arc<InnerReadDir>,
|
||||
|
|
@ -295,16 +298,17 @@ pub struct DirEntry {
|
|||
// we're not using the immediate `d_name` on these targets. Keeping this as an
|
||||
// `entry` field in `DirEntry` helps reduce the `cfg` boilerplate elsewhere.
|
||||
#[cfg(any(
|
||||
target_os = "android",
|
||||
target_os = "linux",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
target_os = "aix",
|
||||
target_os = "nto",
|
||||
target_os = "vita",
|
||||
target_os = "android",
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "hurd",
|
||||
target_os = "illumos",
|
||||
target_os = "linux",
|
||||
target_os = "nto",
|
||||
target_os = "redox",
|
||||
target_os = "solaris",
|
||||
target_os = "vita",
|
||||
))]
|
||||
struct dirent64_min {
|
||||
d_ino: u64,
|
||||
|
|
@ -319,16 +323,17 @@ struct dirent64_min {
|
|||
}
|
||||
|
||||
#[cfg(not(any(
|
||||
target_os = "android",
|
||||
target_os = "linux",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
target_os = "aix",
|
||||
target_os = "nto",
|
||||
target_os = "vita",
|
||||
target_os = "android",
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "hurd",
|
||||
target_os = "illumos",
|
||||
target_os = "linux",
|
||||
target_os = "nto",
|
||||
target_os = "redox",
|
||||
target_os = "solaris",
|
||||
target_os = "vita",
|
||||
)))]
|
||||
pub struct DirEntry {
|
||||
dir: Arc<InnerReadDir>,
|
||||
|
|
@ -698,16 +703,17 @@ impl Iterator for ReadDir {
|
|||
type Item = io::Result<DirEntry>;
|
||||
|
||||
#[cfg(any(
|
||||
target_os = "android",
|
||||
target_os = "linux",
|
||||
target_os = "solaris",
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
target_os = "illumos",
|
||||
target_os = "aix",
|
||||
target_os = "nto",
|
||||
target_os = "vita",
|
||||
target_os = "android",
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "hurd",
|
||||
target_os = "illumos",
|
||||
target_os = "linux",
|
||||
target_os = "nto",
|
||||
target_os = "redox",
|
||||
target_os = "solaris",
|
||||
target_os = "vita",
|
||||
))]
|
||||
fn next(&mut self) -> Option<io::Result<DirEntry>> {
|
||||
use crate::sys::os::{errno, set_errno};
|
||||
|
|
@ -768,6 +774,9 @@ impl Iterator for ReadDir {
|
|||
// only access those bytes.
|
||||
#[cfg(not(target_os = "vita"))]
|
||||
let entry = dirent64_min {
|
||||
#[cfg(target_os = "freebsd")]
|
||||
d_ino: (*entry_ptr).d_fileno,
|
||||
#[cfg(not(target_os = "freebsd"))]
|
||||
d_ino: (*entry_ptr).d_ino as u64,
|
||||
#[cfg(not(any(
|
||||
target_os = "solaris",
|
||||
|
|
@ -791,16 +800,17 @@ impl Iterator for ReadDir {
|
|||
}
|
||||
|
||||
#[cfg(not(any(
|
||||
target_os = "android",
|
||||
target_os = "linux",
|
||||
target_os = "solaris",
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
target_os = "illumos",
|
||||
target_os = "aix",
|
||||
target_os = "nto",
|
||||
target_os = "vita",
|
||||
target_os = "android",
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "hurd",
|
||||
target_os = "illumos",
|
||||
target_os = "linux",
|
||||
target_os = "nto",
|
||||
target_os = "redox",
|
||||
target_os = "solaris",
|
||||
target_os = "vita",
|
||||
)))]
|
||||
fn next(&mut self) -> Option<io::Result<DirEntry>> {
|
||||
if self.end_of_stream {
|
||||
|
|
@ -970,36 +980,32 @@ impl DirEntry {
|
|||
}
|
||||
|
||||
#[cfg(any(
|
||||
target_os = "linux",
|
||||
target_os = "aix",
|
||||
target_os = "android",
|
||||
target_os = "cygwin",
|
||||
target_os = "emscripten",
|
||||
target_os = "android",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
target_os = "haiku",
|
||||
target_os = "l4re",
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
target_os = "vxworks",
|
||||
target_os = "espidf",
|
||||
target_os = "freebsd",
|
||||
target_os = "fuchsia",
|
||||
target_os = "haiku",
|
||||
target_os = "horizon",
|
||||
target_os = "vita",
|
||||
target_os = "aix",
|
||||
target_os = "nto",
|
||||
target_os = "hurd",
|
||||
target_os = "illumos",
|
||||
target_os = "l4re",
|
||||
target_os = "linux",
|
||||
target_os = "nto",
|
||||
target_os = "redox",
|
||||
target_os = "rtems",
|
||||
target_os = "solaris",
|
||||
target_os = "vita",
|
||||
target_os = "vxworks",
|
||||
target_vendor = "apple",
|
||||
))]
|
||||
pub fn ino(&self) -> u64 {
|
||||
self.entry.d_ino as u64
|
||||
}
|
||||
|
||||
#[cfg(any(
|
||||
target_os = "freebsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "netbsd",
|
||||
target_os = "dragonfly"
|
||||
))]
|
||||
#[cfg(any(target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly"))]
|
||||
pub fn ino(&self) -> u64 {
|
||||
self.entry.d_fileno as u64
|
||||
}
|
||||
|
|
@ -1014,7 +1020,6 @@ impl DirEntry {
|
|||
#[cfg(any(
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "freebsd",
|
||||
target_os = "dragonfly",
|
||||
target_vendor = "apple",
|
||||
))]
|
||||
|
|
@ -1030,7 +1035,6 @@ impl DirEntry {
|
|||
#[cfg(not(any(
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd",
|
||||
target_os = "freebsd",
|
||||
target_os = "dragonfly",
|
||||
target_vendor = "apple",
|
||||
)))]
|
||||
|
|
@ -1040,6 +1044,7 @@ impl DirEntry {
|
|||
|
||||
#[cfg(not(any(
|
||||
target_os = "android",
|
||||
target_os = "freebsd",
|
||||
target_os = "linux",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
|
|
@ -1055,6 +1060,7 @@ impl DirEntry {
|
|||
}
|
||||
#[cfg(any(
|
||||
target_os = "android",
|
||||
target_os = "freebsd",
|
||||
target_os = "linux",
|
||||
target_os = "solaris",
|
||||
target_os = "illumos",
|
||||
|
|
|
|||
|
|
@ -1039,6 +1039,9 @@ class RustBuild(object):
|
|||
# See also: <https://github.com/rust-lang/rust/issues/70208>.
|
||||
if "CARGO_BUILD_TARGET" in env:
|
||||
del env["CARGO_BUILD_TARGET"]
|
||||
# if in CI, don't use incremental build when building bootstrap.
|
||||
if "GITHUB_ACTIONS" in env:
|
||||
env["CARGO_INCREMENTAL"] = "0"
|
||||
env["CARGO_TARGET_DIR"] = build_dir
|
||||
env["RUSTC"] = self.rustc()
|
||||
env["LD_LIBRARY_PATH"] = (
|
||||
|
|
|
|||
|
|
@ -701,4 +701,4 @@ RFC process, with approval by the compiler and infra teams. Any such proposal
|
|||
will be communicated widely to the Rust community, both when initially proposed
|
||||
and before being dropped from a stable release.
|
||||
|
||||
[MCP]: https://forge.rust-lang.org/compiler/mcp.html
|
||||
[MCP]: https://forge.rust-lang.org/compiler/proposals-and-stabilization.html#how-do-i-submit-an-mcp
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ fn init_compiler_benchmarks(
|
|||
"--exact-match",
|
||||
crates.join(",").as_str(),
|
||||
])
|
||||
.env("RUST_LOG", "collector=debug")
|
||||
.env("RUSTC", env.rustc_stage_0().as_str())
|
||||
.env("RUSTC_BOOTSTRAP", "1")
|
||||
.workdir(&env.rustc_perf_dir());
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ extern crate minicore;
|
|||
use minicore::*;
|
||||
|
||||
// CHECK-LABEL: @flags_clobber
|
||||
// CHECK: call void asm sideeffect "", "~{vtype},~{vl},~{vxsat},~{vxrm}"()
|
||||
// CHECK: call void asm sideeffect "", "~{fflags},~{vtype},~{vl},~{vxsat},~{vxrm}"()
|
||||
#[no_mangle]
|
||||
pub unsafe fn flags_clobber() {
|
||||
asm!("", options(nostack, nomem));
|
||||
|
|
|
|||
|
|
@ -1,15 +1,19 @@
|
|||
//@ add-core-stubs
|
||||
//@ compile-flags: -Copt-level=3 -C no-prepopulate-passes
|
||||
//@ revisions: riscv64 loongarch64
|
||||
|
||||
//@[riscv64] only-riscv64
|
||||
//@[riscv64] compile-flags: --target riscv64gc-unknown-linux-gnu
|
||||
//@[riscv64] needs-llvm-components: riscv
|
||||
|
||||
//@[loongarch64] only-loongarch64
|
||||
//@[loongarch64] compile-flags: --target loongarch64-unknown-linux-gnu
|
||||
//@[loongarch64] needs-llvm-components: loongarch
|
||||
|
||||
#![crate_type = "lib"]
|
||||
#![feature(no_core)]
|
||||
#![no_core]
|
||||
|
||||
extern crate minicore;
|
||||
use minicore::*;
|
||||
|
||||
#[no_mangle]
|
||||
// riscv64: define noundef i8 @arg_attr_u8(i8 noundef zeroext %x)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ error: constant BAD_PATTERN cannot be used as pattern
|
|||
LL | BAD_PATTERN => {},
|
||||
| ^^^^^^^^^^^
|
||||
|
|
||||
= note: constants that reference mutable or external memory cannot be used as pattern
|
||||
= note: constants that reference mutable or external memory cannot be used as patterns
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ error: constant extern_::C cannot be used as pattern
|
|||
LL | C => {}
|
||||
| ^
|
||||
|
|
||||
= note: constants that reference mutable or external memory cannot be used as pattern
|
||||
= note: constants that reference mutable or external memory cannot be used as patterns
|
||||
|
||||
error: constant mutable::C cannot be used as pattern
|
||||
--> $DIR/const_refs_to_static_fail_invalid.rs:42:9
|
||||
|
|
@ -23,7 +23,7 @@ error: constant mutable::C cannot be used as pattern
|
|||
LL | C => {}
|
||||
| ^
|
||||
|
|
||||
= note: constants that reference mutable or external memory cannot be used as pattern
|
||||
= note: constants that reference mutable or external memory cannot be used as patterns
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ error: constant REF_INTERIOR_MUT cannot be used as pattern
|
|||
LL | REF_INTERIOR_MUT => {},
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: constants that reference mutable or external memory cannot be used as pattern
|
||||
= note: constants that reference mutable or external memory cannot be used as patterns
|
||||
|
||||
warning: skipping const checks
|
||||
|
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ error: constant SLICE_MUT cannot be used as pattern
|
|||
LL | SLICE_MUT => true,
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
= note: constants that reference mutable or external memory cannot be used as pattern
|
||||
= note: constants that reference mutable or external memory cannot be used as patterns
|
||||
|
||||
error: constant U8_MUT cannot be used as pattern
|
||||
--> $DIR/const_refers_to_static_cross_crate.rs:44:9
|
||||
|
|
@ -18,7 +18,7 @@ error: constant U8_MUT cannot be used as pattern
|
|||
LL | U8_MUT => true,
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: constants that reference mutable or external memory cannot be used as pattern
|
||||
= note: constants that reference mutable or external memory cannot be used as patterns
|
||||
|
||||
error: constant U8_MUT2 cannot be used as pattern
|
||||
--> $DIR/const_refers_to_static_cross_crate.rs:53:9
|
||||
|
|
@ -26,7 +26,7 @@ error: constant U8_MUT2 cannot be used as pattern
|
|||
LL | U8_MUT2 => true,
|
||||
| ^^^^^^^
|
||||
|
|
||||
= note: constants that reference mutable or external memory cannot be used as pattern
|
||||
= note: constants that reference mutable or external memory cannot be used as patterns
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue