Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 16 pull requests #138480

Merged
merged 39 commits into from
Mar 14, 2025
Merged
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
0c10339
Overhaul examples for PermissionsExt
hkBst Jan 24, 2025
746b0f6
Sync Fuchsia target spec with clang Fuchsia driver
erickt Feb 11, 2025
4e703f5
docs(std): mention LazyLock in const/static HashMap construction
karolzwolak Mar 1, 2025
ffa86bf
Reword documentation about SocketAddr having varying layout
clarfonthey Jan 29, 2025
d39a258
Enable metrics and verbose tests in PR CI
Kobzol Mar 12, 2025
675ae1a
use `expect` instead of `allow`
onur-ozkan Mar 12, 2025
c8a6fcc
fix: remove the check of lld not supporting @response-file
weihanglo Mar 12, 2025
8bf33c2
Visit PatField when collecting lint levels
compiler-errors Mar 13, 2025
231627b
update error message
tshepang Mar 13, 2025
88b206d
atomic intrinsics: clarify which types are supported and (if applicab…
RalfJung Mar 12, 2025
36ff87e
EUV: fix place of deref pattern's interior's scrutinee
dianne Mar 13, 2025
3cf1a68
Add `doc_url` attribute to CI jobs
Kobzol Mar 13, 2025
aab643f
Fill `doc_url` for Rust for Linux and Fuchsia jobs
Kobzol Mar 13, 2025
6117644
Output job doc URL to allow Rust Log Analyzer to access it
Kobzol Mar 13, 2025
0c6d24e
Print job doc URL on job failure
Kobzol Mar 13, 2025
83ee034
Remove usage of legacy scheme paths on RedoxOS
bjorn3 Mar 13, 2025
2c76bf7
Remove an outdated line from a test comment
WaffleLapkin Mar 13, 2025
c88dfb2
Remove myself from libs review
cuviper Mar 13, 2025
abed12a
Add `src/tools/x` to the main workspace
cuviper Mar 7, 2025
66deb69
Alphabetize the root workspace members
cuviper Mar 7, 2025
8c91fae
Remove separate `src/tools/x` from rust-analyzer settings
cuviper Mar 10, 2025
496788a
Record the new settings checksums
cuviper Mar 10, 2025
43499bf
Remove has_redox_scheme
bjorn3 Mar 13, 2025
c62707e
Rollup merge of #136001 - hkBst:patch-21, r=cuviper
jhpratt Mar 14, 2025
595c624
Rollup merge of #136230 - clarfonthey:net-memory-layout-assumptions, …
jhpratt Mar 14, 2025
459352a
Rollup merge of #136892 - erickt:fuchsia-target, r=jieyouxu
jhpratt Mar 14, 2025
6ae5c8d
Rollup merge of #136911 - Kobzol:ci-helper-link, r=marcoieni
jhpratt Mar 14, 2025
936e51e
Rollup merge of #137870 - karolzwolak:lazylock-const-hashmaps-137566,…
jhpratt Mar 14, 2025
b9c33fa
Rollup merge of #138179 - cuviper:x, r=jieyouxu
jhpratt Mar 14, 2025
82d4ab6
Rollup merge of #138389 - onur-ozkan:use-expect, r=jieyouxu
jhpratt Mar 14, 2025
637f059
Rollup merge of #138396 - Kobzol:ci-metrics, r=marcoieni
jhpratt Mar 14, 2025
91e4bab
Rollup merge of #138398 - RalfJung:atomic-intrinsics-provenance, r=nn…
jhpratt Mar 14, 2025
e928a8f
Rollup merge of #138432 - weihanglo:lld, r=lqd
jhpratt Mar 14, 2025
fb2a7fa
Rollup merge of #138434 - compiler-errors:lint-level-pat-field, r=jie…
jhpratt Mar 14, 2025
7de35c8
Rollup merge of #138441 - tshepang:patch-5, r=jieyouxu
jhpratt Mar 14, 2025
f505572
Rollup merge of #138442 - dianne:deref-pat-euv-fix, r=compiler-errors
jhpratt Mar 14, 2025
f6fcae0
Rollup merge of #138457 - bjorn3:redox_scheme_paths, r=Noratrieb
jhpratt Mar 14, 2025
db022a8
Rollup merge of #138461 - WaffleLapkin:indate-comment, r=ehuss
jhpratt Mar 14, 2025
dea8a15
Rollup merge of #138466 - cuviper:libs-review, r=jieyouxu
jhpratt Mar 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -68,6 +68,7 @@ jobs:
timeout-minutes: 360
env:
CI_JOB_NAME: ${{ matrix.name }}
CI_JOB_DOC_URL: ${{ matrix.doc_url }}
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
# commit of PR sha or commit sha. `GITHUB_SHA` is not accurate for PRs.
HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
@@ -190,8 +191,20 @@ jobs:
CARGO_INCREMENTAL=0 CARGO_TARGET_DIR=../../../build/citool cargo build

- name: run the build
# Redirect stderr to stdout to avoid reordering the two streams in the GHA logs.
run: src/ci/scripts/run-build-from-ci.sh 2>&1
run: |
set +e
# Redirect stderr to stdout to avoid reordering the two streams in the GHA logs.
src/ci/scripts/run-build-from-ci.sh 2>&1
STATUS=$?
set -e

if [[ "$STATUS" -ne 0 && -n "$CI_JOB_DOC_URL" ]]; then
echo "****************************************************************************"
echo "To find more information about this job, visit the following URL:"
echo "$CI_JOB_DOC_URL"
echo "****************************************************************************"
fi
exit ${STATUS}
env:
AWS_ACCESS_KEY_ID: ${{ env.CACHES_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}
4 changes: 4 additions & 0 deletions Cargo.lock
Original file line number Diff line number Diff line change
@@ -6438,6 +6438,10 @@ version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"

[[package]]
name = "x"
version = "0.1.1"

[[package]]
name = "xattr"
version = "1.4.0"
56 changes: 27 additions & 29 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,50 +1,53 @@
[workspace]
resolver = "2"
members = [
# tidy-alphabetical-start
"compiler/rustc",
"src/build_helper",
"src/etc/test-float-parse",
"src/rustc-std-workspace/rustc-std-workspace-core",
"src/rustc-std-workspace/rustc-std-workspace-alloc",
"src/rustc-std-workspace/rustc-std-workspace-core",
"src/rustc-std-workspace/rustc-std-workspace-std",
"src/rustdoc-json-types",
"src/tools/build-manifest",
"src/tools/bump-stage0",
"src/tools/cargotest",
"src/tools/clippy",
"src/tools/clippy/clippy_dev",
"src/tools/collect-license-metadata",
"src/tools/compiletest",
"src/tools/run-make-support",
"src/tools/coverage-dump",
"src/tools/features-status-dump",
"src/tools/generate-copyright",
"src/tools/generate-windows-sys",
"src/tools/html-checker",
"src/tools/jsondocck",
"src/tools/jsondoclint",
"src/tools/linkchecker",
"src/tools/lint-docs",
"src/tools/lld-wrapper",
"src/tools/llvm-bitcode-linker",
"src/tools/miri",
"src/tools/miri/cargo-miri",
"src/tools/miropt-test-tools",
"src/tools/unstable-book-gen",
"src/tools/tidy",
"src/tools/tier-check",
"src/tools/build-manifest",
"src/tools/opt-dist",
"src/tools/remote-test-client",
"src/tools/remote-test-server",
"src/tools/replace-version-placeholder",
"src/tools/run-make-support",
"src/tools/rust-installer",
"src/tools/rustdoc",
"src/tools/rustfmt",
"src/tools/miri",
"src/tools/miri/cargo-miri",
"src/tools/rustdoc-gui-test",
"src/tools/rustdoc-themes",
"src/tools/unicode-table-generator",
"src/tools/jsondocck",
"src/tools/jsondoclint",
"src/tools/llvm-bitcode-linker",
"src/tools/html-checker",
"src/tools/bump-stage0",
"src/tools/replace-version-placeholder",
"src/tools/lld-wrapper",
"src/tools/collect-license-metadata",
"src/tools/generate-copyright",
"src/tools/rustfmt",
"src/tools/suggest-tests",
"src/tools/generate-windows-sys",
"src/tools/rustdoc-gui-test",
"src/tools/opt-dist",
"src/tools/coverage-dump",
"src/tools/tidy",
"src/tools/tier-check",
"src/tools/unicode-table-generator",
"src/tools/unstable-book-gen",
"src/tools/wasm-component-ld",
"src/tools/features-status-dump",
"src/tools/x",
# tidy-alphabetical-end
]

exclude = [
@@ -55,11 +58,6 @@ exclude = [
"tests/rustdoc-gui",
# HACK(eddyb) This hardcodes the fact that our CI uses `/checkout/obj`.
"obj",
# The `x` binary is a thin wrapper that calls `x.py`, which initializes
# submodules, before which workspace members cannot be invoked because
# not all `Cargo.toml` files are available, so we exclude the `x` binary,
# so it can be invoked before the current checkout is set up.
"src/tools/x",
]

[profile.release.package.rustc-rayon-core]
8 changes: 4 additions & 4 deletions compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs
Original file line number Diff line number Diff line change
@@ -1031,7 +1031,7 @@ fn codegen_regular_intrinsic_call<'tcx>(

let layout = src.layout();
match layout.ty.kind() {
ty::Uint(_) | ty::Int(_) | ty::RawPtr(..) => {}
ty::Int(_) => {}
_ => {
report_atomic_type_validation_error(fx, intrinsic, source_info.span, layout.ty);
return Ok(());
@@ -1052,7 +1052,7 @@ fn codegen_regular_intrinsic_call<'tcx>(

let layout = src.layout();
match layout.ty.kind() {
ty::Uint(_) | ty::Int(_) | ty::RawPtr(..) => {}
ty::Uint(_) => {}
_ => {
report_atomic_type_validation_error(fx, intrinsic, source_info.span, layout.ty);
return Ok(());
@@ -1073,7 +1073,7 @@ fn codegen_regular_intrinsic_call<'tcx>(

let layout = src.layout();
match layout.ty.kind() {
ty::Uint(_) | ty::Int(_) | ty::RawPtr(..) => {}
ty::Int(_) => {}
_ => {
report_atomic_type_validation_error(fx, intrinsic, source_info.span, layout.ty);
return Ok(());
@@ -1094,7 +1094,7 @@ fn codegen_regular_intrinsic_call<'tcx>(

let layout = src.layout();
match layout.ty.kind() {
ty::Uint(_) | ty::Int(_) | ty::RawPtr(..) => {}
ty::Uint(_) => {}
_ => {
report_atomic_type_validation_error(fx, intrinsic, source_info.span, layout.ty);
return Ok(());
7 changes: 0 additions & 7 deletions compiler/rustc_codegen_ssa/src/back/command.rs
Original file line number Diff line number Diff line change
@@ -143,13 +143,6 @@ impl Command {
return false;
}

// Right now LLD doesn't support the `@` syntax of passing an argument
// through files, so regardless of the platform we try to go to the OS
// on this one.
if let Program::Lld(..) = self.program {
return false;
}

// Ok so on Windows to spawn a process is 32,768 characters in its
// command line [1]. Unfortunately we don't actually have access to that
// as it's calculated just before spawning. Instead we perform a
38 changes: 34 additions & 4 deletions compiler/rustc_codegen_ssa/src/mir/intrinsic.rs
Original file line number Diff line number Diff line change
@@ -433,6 +433,40 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
}

// These are all AtomicRMW ops
"max" | "min" => {
let atom_op = if instruction == "max" {
AtomicRmwBinOp::AtomicMax
} else {
AtomicRmwBinOp::AtomicMin
};

let ty = fn_args.type_at(0);
if matches!(ty.kind(), ty::Int(_)) {
let ptr = args[0].immediate();
let val = args[1].immediate();
bx.atomic_rmw(atom_op, ptr, val, parse_ordering(bx, ordering))
} else {
invalid_monomorphization(ty);
return Ok(());
}
}
"umax" | "umin" => {
let atom_op = if instruction == "umax" {
AtomicRmwBinOp::AtomicUMax
} else {
AtomicRmwBinOp::AtomicUMin
};

let ty = fn_args.type_at(0);
if matches!(ty.kind(), ty::Uint(_)) {
let ptr = args[0].immediate();
let val = args[1].immediate();
bx.atomic_rmw(atom_op, ptr, val, parse_ordering(bx, ordering))
} else {
invalid_monomorphization(ty);
return Ok(());
}
}
op => {
let atom_op = match op {
"xchg" => AtomicRmwBinOp::AtomicXchg,
@@ -442,10 +476,6 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
"nand" => AtomicRmwBinOp::AtomicNand,
"or" => AtomicRmwBinOp::AtomicOr,
"xor" => AtomicRmwBinOp::AtomicXor,
"max" => AtomicRmwBinOp::AtomicMax,
"min" => AtomicRmwBinOp::AtomicMin,
"umax" => AtomicRmwBinOp::AtomicUMax,
"umin" => AtomicRmwBinOp::AtomicUMin,
_ => bx.sess().dcx().emit_fatal(errors::UnknownAtomicOperation),
};

3 changes: 2 additions & 1 deletion compiler/rustc_hir_typeck/src/expr_use_visitor.rs
Original file line number Diff line number Diff line change
@@ -1840,7 +1840,8 @@ impl<'tcx, Cx: TypeInformationCtxt<'tcx>, D: Delegate<'tcx>> ExprUseVisitor<'tcx
let ty = self.pat_ty_adjusted(subpat)?;
let ty = Ty::new_ref(self.cx.tcx(), re_erased, ty, mutability);
// A deref pattern generates a temporary.
let place = self.cat_rvalue(pat.hir_id, ty);
let base = self.cat_rvalue(pat.hir_id, ty);
let place = self.cat_deref(pat.hir_id, base)?;
self.cat_pattern(place, subpat, op)?;
}

5 changes: 5 additions & 0 deletions compiler/rustc_lint/src/levels.rs
Original file line number Diff line number Diff line change
@@ -299,6 +299,11 @@ impl<'tcx> Visitor<'tcx> for LintLevelsBuilder<'_, LintLevelQueryMap<'tcx>> {
intravisit::walk_expr(self, e);
}

fn visit_pat_field(&mut self, f: &'tcx hir::PatField<'tcx>) -> Self::Result {
self.add_id(f.hir_id);
intravisit::walk_pat_field(self, f);
}

fn visit_expr_field(&mut self, f: &'tcx hir::ExprField<'tcx>) {
self.add_id(f.hir_id);
intravisit::walk_expr_field(self, f);
6 changes: 5 additions & 1 deletion compiler/rustc_target/src/spec/base/fuchsia.rs
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@ pub(crate) fn opts() -> TargetOptions {
// now. When using clang as the linker it will supply these options for us,
// so we only list them for ld/lld.
//
// https://github.com/llvm/llvm-project/blob/db9322b2066c55254e7691efeab863f43bfcc084/clang/lib/Driver/ToolChains/Fuchsia.cpp#L31
// https://github.com/llvm/llvm-project/blob/0419db6b95e246fe9dc90b5795beb77c393eb2ce/clang/lib/Driver/ToolChains/Fuchsia.cpp#L32
let pre_link_args = TargetOptions::link_args(
LinkerFlavor::Gnu(Cc::No, Lld::No),
&[
@@ -18,9 +18,13 @@ pub(crate) fn opts() -> TargetOptions {
"-z",
"now",
"-z",
"start-stop-visibility=hidden",
"-z",
"rodynamic",
"-z",
"separate-loadable-segments",
"-z",
"rel",
"--pack-dyn-relocs=relr",
],
);
34 changes: 24 additions & 10 deletions compiler/rustc_target/src/spec/targets/aarch64_unknown_fuchsia.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
use crate::spec::{SanitizerSet, StackProbeType, Target, TargetMetadata, TargetOptions, base};
use crate::spec::{
Cc, LinkerFlavor, Lld, SanitizerSet, StackProbeType, Target, TargetMetadata, base,
};

pub(crate) fn target() -> Target {
let mut base = base::fuchsia::opts();
base.cpu = "generic".into();
base.features = "+v8a,+crc,+aes,+sha2,+neon".into();
base.max_atomic_width = Some(128);
base.stack_probes = StackProbeType::Inline;
base.supported_sanitizers = SanitizerSet::ADDRESS
| SanitizerSet::CFI
| SanitizerSet::LEAK
| SanitizerSet::SHADOWCALLSTACK;
base.supports_xray = true;

base.add_pre_link_args(
LinkerFlavor::Gnu(Cc::No, Lld::No),
&[
"--execute-only",
// Enable the Cortex-A53 errata 843419 mitigation by default
"--fix-cortex-a53-843419",
],
);

Target {
llvm_target: "aarch64-unknown-fuchsia".into(),
metadata: TargetMetadata {
@@ -12,14 +34,6 @@ pub(crate) fn target() -> Target {
pointer_width: 64,
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
arch: "aarch64".into(),
options: TargetOptions {
features: "+v8a".into(),
max_atomic_width: Some(128),
stack_probes: StackProbeType::Inline,
supported_sanitizers: SanitizerSet::ADDRESS
| SanitizerSet::CFI
| SanitizerSet::SHADOWCALLSTACK,
..base::fuchsia::opts()
},
options: base,
}
}
22 changes: 12 additions & 10 deletions compiler/rustc_target/src/spec/targets/riscv64gc_unknown_fuchsia.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
use crate::spec::{CodeModel, SanitizerSet, Target, TargetMetadata, TargetOptions, base};
use crate::spec::{CodeModel, SanitizerSet, StackProbeType, Target, TargetMetadata, base};

pub(crate) fn target() -> Target {
let mut base = base::fuchsia::opts();
base.code_model = Some(CodeModel::Medium);
base.cpu = "generic-rv64".into();
base.features = "+m,+a,+f,+d,+c".into();
base.llvm_abiname = "lp64d".into();
base.max_atomic_width = Some(64);
base.stack_probes = StackProbeType::Inline;
base.supported_sanitizers = SanitizerSet::SHADOWCALLSTACK;
base.supports_xray = true;

Target {
llvm_target: "riscv64-unknown-fuchsia".into(),
metadata: TargetMetadata {
@@ -12,14 +22,6 @@ pub(crate) fn target() -> Target {
pointer_width: 64,
data_layout: "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128".into(),
arch: "riscv64".into(),
options: TargetOptions {
code_model: Some(CodeModel::Medium),
cpu: "generic-rv64".into(),
features: "+m,+a,+f,+d,+c".into(),
llvm_abiname: "lp64d".into(),
max_atomic_width: Some(64),
supported_sanitizers: SanitizerSet::SHADOWCALLSTACK,
..base::fuchsia::opts()
},
options: base,
}
}
Original file line number Diff line number Diff line change
@@ -4,7 +4,10 @@ pub(crate) fn target() -> Target {
let mut base = base::fuchsia::opts();
base.cpu = "x86-64".into();
base.plt_by_default = false;
base.max_atomic_width = Some(64);
// See https://fuchsia.dev/fuchsia-src/contribute/governance/rfcs/0073_x86_64_platform_requirement,
// which corresponds to x86-64-v2.
base.features = "+cx16,+sahf,+popcnt,+sse3,+sse4.1,+sse4.2,+ssse3".into();
base.max_atomic_width = Some(128);
base.stack_probes = StackProbeType::Inline;
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK;
base.supports_xray = true;
Loading