Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
2f6b0b9
Prepare for merging from rust-lang/rust
Aug 26, 2026
7af0b9d
Merge ref '0f33d0912709' from rust-lang/rust
Aug 26, 2026
320e73d
Merge pull request #5288 from rust-lang/rustup-2026-08-26
RalfJung Aug 26, 2026
8899b3a
Prepare for merging from rust-lang/rust
Aug 27, 2026
ae4d3f6
Merge ref 'd9dd0703ba33' from rust-lang/rust
Aug 27, 2026
6b76f62
Merge pull request #5290 from rust-lang/rustup-2026-08-27
RalfJung Aug 27, 2026
447c07c
Prepare for merging from rust-lang/rust
Aug 28, 2026
f59840a
Merge ref 'd0f2ef5e5303' from rust-lang/rust
Aug 28, 2026
0537ad1
fmt
Aug 28, 2026
84eda66
Merge pull request #5292 from rust-lang/rustup-2026-08-28
RalfJung Aug 28, 2026
a19dad7
add chacha20 target feature bug to trophy case
RalfJung Aug 28, 2026
8173a82
Merge pull request #5293 from RalfJung/trophy
RalfJung Aug 28, 2026
6bebbc6
Install cargo tools with locked dependencies
konstin Aug 28, 2026
a7e8b16
Prepare for merging from rust-lang/rust
RalfJung Aug 29, 2026
386ff4d
Merge ref '17fd5b8a37b6' from rust-lang/rust
RalfJung Aug 29, 2026
d40b91f
add FIXME in GetProcAddress
RalfJung Aug 29, 2026
5c00572
genmc: fix incorrect use of ptr size
RalfJung Aug 29, 2026
43ba074
Merge pull request #5295 from konstin/konsti/cargo-install-locked
RalfJung Aug 29, 2026
5eb9288
Merge pull request #5296 from RalfJung/rustup
RalfJung Aug 29, 2026
5110844
remove outdated reference to -Zsaturating-float-casts
hanna-kruppe Aug 29, 2026
b71de26
Merge pull request #5297 from hanna-kruppe/rm-flag-satfpcast
RalfJung Aug 29, 2026
de7ea66
use `portable_simd` `f16` vectors in tests
folkertdev Aug 23, 2026
c56b0dd
further tweaks
RalfJung Sep 1, 2026
b5b163f
Merge pull request #5279 from folkertdev/portable-simd-f16
RalfJung Sep 1, 2026
94834d1
Prepare for merging from rust-lang/rust
Sep 2, 2026
106327c
Merge ref 'edc52f87c28f' from rust-lang/rust
Sep 2, 2026
000f1be
Merge pull request #5300 from rust-lang/rustup-2026-09-02
RalfJung Sep 2, 2026
03d623e
Prepare for merging from rust-lang/rust
RalfJung Sep 3, 2026
e25eb54
Merge ref '2e2b193f8ada' from rust-lang/rust
RalfJung Sep 3, 2026
d80f170
suppress unused_crate_dependencies
RalfJung Sep 3, 2026
0bddb6e
update chacha20 (previous version got yanked)
RalfJung Sep 3, 2026
55daf60
Merge pull request #5302 from RalfJung/rustup
RalfJung Sep 3, 2026
66d9e73
Promote `wasm32-wasip3` to a tier 2 target
alexcrichton Aug 10, 2026
b1e1bc9
bootstrap: use target's LLVM libdir when cross-compiling
heiher Sep 2, 2026
da7e8aa
Prepare for merging from rust-lang/rust
Sep 4, 2026
5c24233
Merge ref 'a69a63265cfd' from rust-lang/rust
Sep 4, 2026
4fcf6aa
Merge pull request #5304 from rust-lang/rustup-2026-09-04
RalfJung Sep 4, 2026
40c04ee
Move async tests into `tests/coverage/async`
Zalathar Sep 2, 2026
c7c0eea
Move some less-useful tests into `tests/coverage/iffy`
Zalathar Sep 2, 2026
492fff7
Add some simple coverage tests for common constructs
Zalathar Sep 2, 2026
6072e64
rustc_index: Convenient debugging view of the IndexMap
dingxiangfei2009 Jan 9, 2026
375e17f
Add regression test for unsized const parameter default ICE
zakrad Aug 30, 2026
49de62e
Adds tests for SVE inline asm
CrooseGit Jun 15, 2026
cbe88ad
Creates new `InlineAsmSize` enum
CrooseGit Jun 15, 2026
7b2bfec
Adds support for AArch64 SVE to inline assembly
CrooseGit Jun 15, 2026
51b3f52
Merge zreg into vreg and keep ffr in a clobber-only class
Amanieu Aug 25, 2026
c91f5cb
Gate asm support for SVE under asm_experimental_reg
Amanieu Aug 25, 2026
70e0d6d
cargotest: ensure all tests have lockfiles
jnkel Sep 3, 2026
e7c3734
make closure-like types act like MaybeDangling
RalfJung Aug 8, 2026
b7e5447
simplify ManuallyDrop by making it natively 'like MaybeDangling'
RalfJung Aug 8, 2026
95d43bf
remove no-longer-needed MaybeDangling from thread spawning
RalfJung Aug 8, 2026
60b5f88
add another movable-generator regression test
RalfJung Aug 16, 2026
811384a
Fix hashing of span end columns in incremental compilation
cuishuang Sep 3, 2026
14ac84f
std::sys::pal::sgx: fix mismatched alloc/free alignment
phlip9 Aug 27, 2026
297c72a
break rustc_expand-rustc_middle dependency
mejrs Aug 17, 2026
de40569
bless bootstrap
mejrs Aug 22, 2026
0fae8c9
Prepare for merging from rust-lang/rust
Sep 5, 2026
ed65325
Merge ref '0ed41eb4142d' from rust-lang/rust
Sep 5, 2026
28049e0
Fix broken path for `./x doc compiler/rustc --open`
Zalathar Sep 5, 2026
71d9c84
Merge pull request #5307 from rust-lang/rustup-2026-09-05
RalfJung Sep 5, 2026
3974528
Report precondition violation for `<usize as SliceIndex>::get_uncheck…
bardiharborow Sep 5, 2026
a6a7ec1
Add `llvm.x86.aesni.aeskeygenassist` support
newpavlov Sep 2, 2026
ec653e0
Merge pull request #5298 from newpavlov/aeskeygenassist
RalfJung Sep 5, 2026
7ed0b10
Rollup merge of #162324 - RalfJung:miri, r=RalfJung
Zalathar Sep 5, 2026
9e9cc06
Rollup merge of #162170 - heiher:fix-llvm-libdir, r=Kobzol
Zalathar Sep 5, 2026
f6f7d61
Rollup merge of #158312 - CrooseGit:dev/reucru01/sve-asm-support, r=A…
Zalathar Sep 5, 2026
38e8e3a
Rollup merge of #159792 - dingxiangfei2009:coro-debug-map, r=cjgillot
Zalathar Sep 5, 2026
0157777
Rollup merge of #160745 - RalfJung:closure-maybe-dangling, r=WaffleLa…
Zalathar Sep 5, 2026
b7cb7e0
Rollup merge of #161263 - mejrs:expand, r=petrochenkov,JonathanBrouwer
Zalathar Sep 5, 2026
b2fa854
Rollup merge of #161895 - phlip9:phlip9/fix-sgx-alloc-align, r=JohnTitor
Zalathar Sep 5, 2026
eaa6c85
Rollup merge of #161940 - alexcrichton:wasip3, r=davidtwco
Zalathar Sep 5, 2026
63fdaab
Rollup merge of #161397 - Zalathar:tests-coverage, r=davidtwco
Zalathar Sep 5, 2026
bdedfdd
Rollup merge of #161616 - bardiharborow:get-unchecked-index-precondit…
Zalathar Sep 5, 2026
ecd550d
Rollup merge of #162248 - zakrad:regr-test-146084, r=Kivooeo
Zalathar Sep 5, 2026
c5fd862
Rollup merge of #162250 - cuishuang:master, r=mu001999
Zalathar Sep 5, 2026
5fdb088
Rollup merge of #162265 - jnkel:cargotest-lockfile, r=jieyouxu
Zalathar Sep 5, 2026
e9c2c8b
Rollup merge of #162318 - Zalathar:doc-rustc-open, r=Kobzol
Zalathar Sep 5, 2026
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
15 changes: 13 additions & 2 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4055,19 +4055,29 @@ dependencies = [
"rustc_lexer",
"rustc_lint_defs",
"rustc_macros",
"rustc_middle",
"rustc_parse",
"rustc_proc_macro",
"rustc_serialize",
"rustc_session",
"rustc_span",
"rustc_structures",
"scoped-tls",
"smallvec",
"thin-vec",
"tracing",
]

[[package]]
name = "rustc_expand_queries"
version = "0.0.0"
dependencies = [
"rustc_ast",
"rustc_expand",
"rustc_middle",
"rustc_proc_macro",
"rustc_span",
"scoped-tls",
]

[[package]]
name = "rustc_feature"
version = "0.0.0"
Expand Down Expand Up @@ -4271,6 +4281,7 @@ dependencies = [
"rustc_data_structures",
"rustc_errors",
"rustc_expand",
"rustc_expand_queries",
"rustc_feature",
"rustc_fs_util",
"rustc_hir",
Expand Down
7 changes: 4 additions & 3 deletions compiler/rustc_codegen_cranelift/src/inline_asm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -443,11 +443,12 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
.supported_types(self.arch, true)
.iter()
.map(|(ty, _)| ty.size())
.filter_map(InlineAsmSize::fixed_size_bytes)
.max()
.unwrap();
let align = rustc_abi::Align::from_bytes(reg_size.bytes()).unwrap();
.expect("expected fixed-size type");
let align = rustc_abi::Align::from_bytes(reg_size).unwrap();
let offset = slot_size.align_to(align);
*slot_size = offset + reg_size;
*slot_size = offset + rustc_abi::Size::from_bytes(reg_size);
offset
};
let mut new_slot = |x| new_slot_fn(&mut slot_size, x);
Expand Down
12 changes: 9 additions & 3 deletions compiler/rustc_codegen_gcc/src/asm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -692,7 +692,9 @@ fn reg_class_to_gcc(reg_class: InlineAsmRegClass) -> &'static str {
InlineAsmRegClass::AArch64(AArch64InlineAsmRegClass::reg) => "r",
InlineAsmRegClass::AArch64(AArch64InlineAsmRegClass::vreg) => "w",
InlineAsmRegClass::AArch64(AArch64InlineAsmRegClass::vreg_low16) => "x",
InlineAsmRegClass::AArch64(AArch64InlineAsmRegClass::preg) => {
InlineAsmRegClass::AArch64(
AArch64InlineAsmRegClass::preg | AArch64InlineAsmRegClass::ffr,
) => {
unreachable!("clobber-only")
}
InlineAsmRegClass::Amdgpu(AmdgpuInlineAsmRegClass::Sgpr(_)) => "Sg",
Expand Down Expand Up @@ -807,7 +809,9 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
| InlineAsmRegClass::AArch64(AArch64InlineAsmRegClass::vreg_low16) => {
cx.type_vector(cx.type_i64(), 2)
}
InlineAsmRegClass::AArch64(AArch64InlineAsmRegClass::preg) => {
InlineAsmRegClass::AArch64(
AArch64InlineAsmRegClass::preg | AArch64InlineAsmRegClass::ffr,
) => {
unreachable!("clobber-only")
}
InlineAsmRegClass::Amdgpu(_) => cx.type_i32(),
Expand Down Expand Up @@ -1056,7 +1060,9 @@ fn modifier_to_gcc(
| InlineAsmRegClass::AArch64(AArch64InlineAsmRegClass::vreg_low16) => {
if modifier == Some('v') { None } else { modifier }
}
InlineAsmRegClass::AArch64(AArch64InlineAsmRegClass::preg) => {
InlineAsmRegClass::AArch64(
AArch64InlineAsmRegClass::preg | AArch64InlineAsmRegClass::ffr,
) => {
unreachable!("clobber-only")
}
InlineAsmRegClass::Amdgpu(_) => None,
Expand Down
27 changes: 19 additions & 8 deletions compiler/rustc_codegen_llvm/src/asm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -732,18 +732,25 @@ fn reg_to_llvm(reg: InlineAsmRegOrRegClass, layout: Option<&TyAndLayout<'_>>) ->
format!("{{{}{}}}", class, idx)
}
} else if let Some(idx) = a64_vreg_index(reg) {
let class = if let Some(layout) = layout {
match layout.size.bytes() {
let class = match layout {
Some(layout)
if matches!(
layout.backend_repr,
BackendRepr::SimdScalableVector { .. }
) =>
{
'z'
}
Some(layout) => match layout.size.bytes() {
16 => 'q',
8 => 'd',
4 => 's',
2 => 'h',
1 => 'd', // We fixup i8 to i8x8
_ => unreachable!(),
}
} else {
},
// We use i64x2 as the type for discarded outputs
'q'
None => 'q',
};
format!("{{{}{}}}", class, idx)
} else if let Some(idx) = hexagon_reg_pair_index(reg) {
Expand Down Expand Up @@ -775,7 +782,10 @@ fn reg_to_llvm(reg: InlineAsmRegOrRegClass, layout: Option<&TyAndLayout<'_>>) ->
AArch64(AArch64InlineAsmRegClass::reg) => "r",
AArch64(AArch64InlineAsmRegClass::vreg) => "w",
AArch64(AArch64InlineAsmRegClass::vreg_low16) => "x",
AArch64(AArch64InlineAsmRegClass::preg) => unreachable!("clobber-only"),
// Although the above link suggests its just 'Upa', llvm's own tests seem to suggest its
// '@3Upa'. (see "src/llvm-project/clang/test/CodeGen/AArch64/sve-inline-asm-datatypes.c" line 139)
AArch64(AArch64InlineAsmRegClass::preg) => "@3Upa",
AArch64(AArch64InlineAsmRegClass::ffr) => unreachable!("clobber-only"),
Arm(ArmInlineAsmRegClass::reg) => "r",
Arm(ArmInlineAsmRegClass::sreg)
| Arm(ArmInlineAsmRegClass::dreg_low16)
Expand Down Expand Up @@ -885,7 +895,7 @@ fn modifier_to_llvm(
modifier
}
}
AArch64(AArch64InlineAsmRegClass::preg) => unreachable!("clobber-only"),
AArch64(AArch64InlineAsmRegClass::preg | AArch64InlineAsmRegClass::ffr) => None,
Arm(ArmInlineAsmRegClass::reg) => None,
Arm(ArmInlineAsmRegClass::sreg) | Arm(ArmInlineAsmRegClass::sreg_low16) => None,
Arm(ArmInlineAsmRegClass::dreg)
Expand Down Expand Up @@ -990,7 +1000,8 @@ fn dummy_output_type<'ll>(cx: &CodegenCx<'ll, '_>, reg: InlineAsmRegClass) -> &'
AArch64(AArch64InlineAsmRegClass::vreg) | AArch64(AArch64InlineAsmRegClass::vreg_low16) => {
cx.type_vector(cx.type_i64(), 2)
}
AArch64(AArch64InlineAsmRegClass::preg) => unreachable!("clobber-only"),
AArch64(AArch64InlineAsmRegClass::preg) => cx.type_scalable_vector(cx.type_i1(), 16),
AArch64(AArch64InlineAsmRegClass::ffr) => unreachable!("clobber-only"),
Arm(ArmInlineAsmRegClass::reg) => cx.type_i32(),
Arm(ArmInlineAsmRegClass::sreg) | Arm(ArmInlineAsmRegClass::sreg_low16) => cx.type_f32(),
Arm(ArmInlineAsmRegClass::dreg)
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_codegen_ssa/src/back/link.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4129,7 +4129,7 @@ fn add_lld_args(
// `lld` as the linker.
//
// Note that wasm targets skip this step since the only option there anyway
// is to use LLD but the `wasm32-wasip2` target relies on a wrapper around
// is to use LLD but component-producing targets rely on a wrapper around
// this, `wasm-component-ld`, which is overridden if this option is passed.
if !sess.target.is_like_wasm {
cmd.cc_arg("-fuse-ld=lld");
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_codegen_ssa/src/mir/retag.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ impl<'a, 'tcx, V> RetagPlan<V> {
// the outermost `Box` is what determines the permission that gets created.
ty::Adt(adt, _) if adt.is_box() => Self::visit_box(bx, layout, is_fn_entry),
// Skip traversing for everything inside of `MaybeDangling`
ty::Adt(adt, _) if adt.is_maybe_dangling() => None,
_ if layout.ty.is_like_maybe_dangling() => None,
_ => Self::walk_value(bx, layout, is_fn_entry),
}
}
Expand Down
14 changes: 5 additions & 9 deletions compiler/rustc_const_eval/src/interpret/validity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
use std::borrow::Cow;
use std::fmt::{self, Write};
use std::hash::Hash;
use std::mem;
use std::num::NonZero;

use either::{Left, Right};
Expand Down Expand Up @@ -1528,15 +1527,10 @@ impl<'rt, 'tcx, M: Machine<'tcx>> ValueVisitor<'tcx, M> for ValidityVisitor<'rt,
BackendRepr::Memory { .. } => unreachable!()
}
}
ty::Adt(adt, _) if adt.is_maybe_dangling() => {
let old_may_dangle = mem::replace(&mut self.may_dangle, true);

let inner = self.ecx.project_field(val, FieldIdx::ZERO)?;
self.visit_value(&inner)?;

self.may_dangle = old_may_dangle;
}
_ => {
let old_may_dangle = self.may_dangle;
self.may_dangle |= val.layout.ty.is_like_maybe_dangling();

// default handler
try_validation!(
self.walk_value(val),
Expand All @@ -1546,6 +1540,8 @@ impl<'rt, 'tcx, M: Machine<'tcx>> ValueVisitor<'tcx, M> for ValidityVisitor<'rt,
Ub(InvalidVTableTrait { vtable_dyn_type, expected_dyn_type }) =>
InvalidMetaWrongTrait { expected_dyn_type, vtable_dyn_type },
);

self.may_dangle = old_may_dangle;
}
}

Expand Down
2 changes: 0 additions & 2 deletions compiler/rustc_expand/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ rustc_hir = { path = "../rustc_hir" }
rustc_lexer = { path = "../rustc_lexer" }
rustc_lint_defs = { path = "../rustc_lint_defs" }
rustc_macros = { path = "../rustc_macros" }
rustc_middle = { path = "../rustc_middle" }
rustc_parse = { path = "../rustc_parse" }
# We must use the proc_macro version that we will compile proc-macros against,
# not the one from our own sysroot.
Expand All @@ -29,7 +28,6 @@ rustc_serialize = { path = "../rustc_serialize" }
rustc_session = { path = "../rustc_session" }
rustc_span = { path = "../rustc_span" }
rustc_structures = { path = "../rustc_structures" }
scoped-tls = "1.0"
smallvec = { version = "1.8.1", features = ["union", "may_dangle"] }
thin-vec = "0.2.19"
tracing = "0.1"
Expand Down
4 changes: 0 additions & 4 deletions compiler/rustc_expand/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,3 @@ pub mod config;
pub mod expand;
pub mod module;
pub mod proc_macro;

pub fn provide(providers: &mut rustc_middle::query::Providers) {
providers.derive_macro_expansion = proc_macro::provide_derive_macro_expansion;
}
11 changes: 5 additions & 6 deletions compiler/rustc_expand/src/mbe/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ use rustc_attr_ir::diagnostic::{CustomDiagnostic, Directive, FormatArgs};
use rustc_data_structures::fx::FxHashSet;
use rustc_errors::{Applicability, Diag, DiagCtxtHandle, DiagMessage, pluralize};
use rustc_macros::Subdiagnostic;
use rustc_middle::bug;
use rustc_parse::parser::{Parser, Recovery, token_descr};
use rustc_session::parse::ParseSess;
use rustc_span::source_map::SourceMap;
Expand Down Expand Up @@ -203,7 +202,7 @@ impl BestFailure {
impl<'dcx, 'matcher> Tracker<'matcher> for CollectTrackerAndEmitter<'dcx, 'matcher> {
fn prepare(&mut self, which_matcher: WhichMatcher, matcher: &'matcher [MatcherLoc]) {
if self.current.is_some() {
bug!("`Self::after_arm()` was not called to clean up context");
panic!("`Self::after_arm()` was not called to clean up context");
}

self.current = Some((which_matcher, matcher));
Expand Down Expand Up @@ -236,12 +235,12 @@ impl<'dcx, 'matcher> Tracker<'matcher> for CollectTrackerAndEmitter<'dcx, 'match
}
Failure => {
if self.best_failure.is_none() {
bug!("A matching failure occurred but `Self::failure()` was not called");
panic!("A matching failure occurred but `Self::failure()` was not called");
}
}
Ambiguity => {
if self.result.is_none() {
bug!("An ambiguity error occurred but `Self::ambiguity()` was not called");
panic!("An ambiguity error occurred but `Self::ambiguity()` was not called");
}
}
ErrorReported(guar) => self.result = Some((self.root_span, guar)),
Expand All @@ -253,7 +252,7 @@ impl<'dcx, 'matcher> Tracker<'matcher> for CollectTrackerAndEmitter<'dcx, 'match

fn failure(&mut self, parser: &Parser<'_>) {
let Some((which_matcher, _)) = self.current else {
bug!("`Self::prepare()` was not called to initialize context");
panic!("`Self::prepare()` was not called to initialize context");
};

let mut token = parser.token;
Expand Down Expand Up @@ -290,7 +289,7 @@ impl<'dcx, 'matcher> Tracker<'matcher> for CollectTrackerAndEmitter<'dcx, 'match

fn ambiguity(&mut self, parser: &Parser<'_>) {
let Some((_, matcher)) = self.current else {
bug!("`Self::prepare()` was not called to initialize context");
panic!("`Self::prepare()` was not called to initialize context");
};

#[expect(
Expand Down
8 changes: 2 additions & 6 deletions compiler/rustc_expand/src/mbe/macro_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ pub(crate) use ParseResult::*;
use rustc_ast::token::{self, DocComment, NonterminalKind, Token, TokenKind};
use rustc_data_structures::fx::FxHashMap;
use rustc_errors::{Diag, ErrorGuaranteed};
use rustc_middle::span_bug;
use rustc_parse::parser::{ParseNtResult, Parser, token_descr};
use rustc_span::{Ident, MacroRulesNormalizedIdent, Span};

Expand Down Expand Up @@ -732,17 +731,14 @@ impl TtParser {
// `NamedParseResult`. Otherwise, it's an error.
let mut ret_val = FxHashMap::default();
for loc in matcher {
if let &MatcherLoc::MetaVarDecl { span, bind, .. } = loc
if let &MatcherLoc::MetaVarDecl { bind, .. } = loc
&& ret_val
.insert(MacroRulesNormalizedIdent::new(bind), res.next().unwrap())
.is_some()
{
// Duplicate binds are checked for when the macro definition is processed,
// and should have prevented the definition from ever being used.
span_bug!(
span,
"duplicate meta-variable binding went undetected at macro definition"
)
panic!("duplicate meta-variable binding went undetected at macro definition")
}
}
ret_val
Expand Down
Loading
Loading