Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
446629d
Prepare for merging from rust-lang/rust
Apr 5, 2026
1d807ed
Merge ref 'c92036b45bab' from rust-lang/rust
Apr 5, 2026
82b637b
float test: increase ULP tolerance
RalfJung Apr 5, 2026
97010af
Merge pull request #4941 from rust-lang/rustup-2026-04-05
RalfJung Apr 5, 2026
0b6423d
float test: double error tolerance with imprecise ops on both sides
RalfJung Apr 6, 2026
7f35239
Merge pull request #4942 from RalfJung/float-err-bounds
RalfJung Apr 6, 2026
7a501c5
Prepare for merging from rust-lang/rust
Apr 7, 2026
315c167
Merge ref 'bcded331651b' from rust-lang/rust
Apr 7, 2026
51dec75
fmt
Apr 7, 2026
0fbaf47
Merge pull request #4945 from rust-lang/rustup-2026-04-07
RalfJung Apr 7, 2026
bff890b
Prepare for merging from rust-lang/rust
Apr 8, 2026
1a2291f
Merge ref '30d0309fa821' from rust-lang/rust
Apr 8, 2026
f373acf
disable new build dir layout again due to problems
RalfJung Apr 8, 2026
3fda203
Merge pull request #4946 from rust-lang/rustup-2026-04-08
RalfJung Apr 8, 2026
66580a3
genmc-sys: remove always_configure hack
RalfJung Apr 8, 2026
e44bb8d
Merge pull request #4948 from RalfJung/genmc-always-configure
RalfJung Apr 8, 2026
df1b8b8
fix: fix panic when multiple threads block on same fd
WhySoBad Apr 8, 2026
3c4dfb4
docs: add comment when registering new source
WhySoBad Apr 8, 2026
d11e396
Hexagon: add scalar arch-version target features (v60-v79, audio)
androm3da Apr 8, 2026
beaf7ee
feat: also check that received buffers match
WhySoBad Apr 8, 2026
5c57c5a
fix the bitfield meanings of stacked_borrow item
zjp-CN Apr 9, 2026
a33321c
Merge pull request #4951 from KMiri-rs/stack-borrow-bitfields
RalfJung Apr 9, 2026
630cdae
Prepare for merging from rust-lang/rust
RalfJung Apr 9, 2026
67fd846
Merge ref '4c4205163abc' from rust-lang/rust
RalfJung Apr 9, 2026
4e6323b
re-enable new cargo build dir layout testing
RalfJung Apr 9, 2026
5474218
Merge pull request #4952 from RalfJung/rustup
RalfJung Apr 9, 2026
c3c931a
genmc tests: remove a hack that is no longer needed
RalfJung Apr 9, 2026
a75e80c
remove unused type
RalfJung Apr 9, 2026
6428be1
Merge pull request #4953 from RalfJung/hack-no-more
RalfJung Apr 9, 2026
4e7ec91
fix: implement feedback
WhySoBad Apr 9, 2026
085e4f2
fix: fix doc comment
WhySoBad Apr 9, 2026
2754a83
Fix ICE in `span_extend_prev_while` with multibyte characters
lapla-cogito Apr 9, 2026
0b7f225
fix: implement feedback
WhySoBad Apr 10, 2026
6d4d7a6
fix: deregister I/O sources in blocking I/O manager
WhySoBad Apr 10, 2026
ff61915
Use Vec::push_mut when adding a chunk to arenas
saethlin Apr 11, 2026
0b02f67
Handle leaked host-effect HRTBs before selection
cijiugechu Apr 12, 2026
edf04e1
Merge pull request #4950 from WhySoBad/fix-blocking-io-manager
RalfJung Apr 12, 2026
fa6fedc
Rollup merge of #155197 - RalfJung:miri, r=RalfJung
JonathanBrouwer Apr 12, 2026
b36833d
Rollup merge of #154804 - cijiugechu:fix/host-effect-hrtb-ice, r=adwi…
JonathanBrouwer Apr 12, 2026
5daeaa9
Rollup merge of #155014 - androm3da:hexagon-scalar-target-features, r…
JonathanBrouwer Apr 12, 2026
2834b16
Rollup merge of #155068 - lapla-cogito:multibyte_char, r=mati865
JonathanBrouwer Apr 12, 2026
bf4d385
Rollup merge of #155161 - saethlin:push_mut_saves, r=Kivooeo
JonathanBrouwer Apr 12, 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
7 changes: 2 additions & 5 deletions compiler/rustc_arena/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -287,10 +287,9 @@ impl<T> TypedArena<T> {
// Also ensure that this chunk can fit `additional`.
new_cap = cmp::max(additional, new_cap);

let mut chunk = ArenaChunk::<T>::new(new_cap);
let chunk = chunks.push_mut(ArenaChunk::<T>::new(new_cap));
self.ptr.set(chunk.start());
self.end.set(chunk.end());
chunks.push(chunk);
}
}

Expand Down Expand Up @@ -419,7 +418,7 @@ impl DroplessArena {
// Also ensure that this chunk can fit `additional`.
new_cap = cmp::max(additional, new_cap);

let mut chunk = ArenaChunk::new(align_up(new_cap, PAGE));
let chunk = chunks.push_mut(ArenaChunk::new(align_up(new_cap, PAGE)));
self.start.set(chunk.start());

// Align the end to DROPLESS_ALIGNMENT.
Expand All @@ -430,8 +429,6 @@ impl DroplessArena {
debug_assert!(chunk.start().addr() <= end);

self.end.set(chunk.end().with_addr(end));

chunks.push(chunk);
}
}

Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_span/src/source_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -743,7 +743,7 @@ impl SourceMap {
let n = s[..start]
.char_indices()
.rfind(|&(_, c)| !f(c))
.map_or(start, |(i, _)| start - i - 1);
.map_or(start, |(i, c)| start - i - c.len_utf8());
Ok(span.with_lo(span.lo() - BytePos(n as u32)))
})
}
Expand Down
12 changes: 12 additions & 0 deletions compiler/rustc_target/src/target_features.rs
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,7 @@ static X86_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[

const HEXAGON_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
// tidy-alphabetical-start
("audio", Unstable(sym::hexagon_target_feature), &[]),
("hvx", Unstable(sym::hexagon_target_feature), &[]),
("hvx-ieee-fp", Unstable(sym::hexagon_target_feature), &["hvx"]),
("hvx-length64b", Unstable(sym::hexagon_target_feature), &["hvx"]),
Expand All @@ -493,6 +494,17 @@ const HEXAGON_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
("hvxv73", Unstable(sym::hexagon_target_feature), &["hvxv71"]),
("hvxv75", Unstable(sym::hexagon_target_feature), &["hvxv73"]),
("hvxv79", Unstable(sym::hexagon_target_feature), &["hvxv75"]),
("v60", Unstable(sym::hexagon_target_feature), &[]),
("v62", Unstable(sym::hexagon_target_feature), &["v60"]),
("v65", Unstable(sym::hexagon_target_feature), &["v62"]),
("v66", Unstable(sym::hexagon_target_feature), &["v65"]),
("v67", Unstable(sym::hexagon_target_feature), &["v66"]),
("v68", Unstable(sym::hexagon_target_feature), &["v67"]),
("v69", Unstable(sym::hexagon_target_feature), &["v68"]),
("v71", Unstable(sym::hexagon_target_feature), &["v69"]),
("v73", Unstable(sym::hexagon_target_feature), &["v71"]),
("v75", Unstable(sym::hexagon_target_feature), &["v73"]),
("v79", Unstable(sym::hexagon_target_feature), &["v75"]),
("zreg", Unstable(sym::hexagon_target_feature), &[]),
// tidy-alphabetical-end
];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -874,7 +874,9 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
}

if let Ok(Some(ImplSource::UserDefined(impl_data))) =
SelectionContext::new(self).select(&obligation.with(self.tcx, trait_ref.skip_binder()))
self.enter_forall(trait_ref, |trait_ref_for_select| {
SelectionContext::new(self).select(&obligation.with(self.tcx, trait_ref_for_select))
})
{
let impl_did = impl_data.impl_def_id;
let trait_did = trait_ref.def_id();
Expand Down
3 changes: 1 addition & 2 deletions library/proc_macro/src/bridge/arena.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,10 @@ impl Arena {
// Also ensure that this chunk can fit `additional`.
new_cap = cmp::max(additional, new_cap);

let mut chunk = Box::new_uninit_slice(new_cap);
let chunk = chunks.push_mut(Box::new_uninit_slice(new_cap));
let Range { start, end } = chunk.as_mut_ptr_range();
self.start.set(start);
self.end.set(end);
chunks.push(chunk);
}

/// Allocates a byte slice with specified size from the current memory
Expand Down
22 changes: 8 additions & 14 deletions src/tools/miri/genmc-sys/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ mod downloading {
pub(crate) const GENMC_COMMIT: &str = "22d3d0b44dedb4e8e1aae3330e546465e4664529";

/// Ensure that a local GenMC repo is present and set to the correct commit.
/// Return the path of the GenMC repo and whether the checked out commit was changed.
pub(crate) fn download_genmc() -> (PathBuf, bool) {
/// Return the path of the GenMC repo clone.
pub(crate) fn download_genmc() -> PathBuf {
let Ok(genmc_download_path) = PathBuf::from_str(GENMC_DOWNLOAD_PATH);
let commit_oid = Oid::from_str(GENMC_COMMIT).expect("Commit should be valid.");

Expand All @@ -44,7 +44,7 @@ mod downloading {
&& head_commit.id() == commit_oid
{
// Fast path: The expected commit is already checked out.
return (genmc_download_path, false);
return genmc_download_path;
}
// Check if the local repository already contains the commit we need, download it otherwise.
let commit = update_local_repo(&repo, commit_oid);
Expand All @@ -61,7 +61,7 @@ mod downloading {
}
};

(genmc_download_path, true)
genmc_download_path
}

fn get_remote(repo: &Repository) -> Remote<'_> {
Expand Down Expand Up @@ -141,7 +141,7 @@ mod downloading {
}

/// Build the GenMC model checker library and the Rust-C++ interop library with cxx.rs
fn compile_cpp_dependencies(genmc_path: &Path, always_configure: bool) {
fn compile_cpp_dependencies(genmc_path: &Path) {
// Give each step a separate build directory to prevent interference.
let out_dir = PathBuf::from(std::env::var("OUT_DIR").as_deref().unwrap());
let genmc_build_dir = out_dir.join("genmc");
Expand All @@ -156,7 +156,6 @@ fn compile_cpp_dependencies(genmc_path: &Path, always_configure: bool) {

let mut config = cmake::Config::new(genmc_path);
config
.always_configure(always_configure) // We force running the configure step when the GenMC commit changed.
.out_dir(genmc_build_dir)
.profile(GENMC_CMAKE_PROFILE)
.define("BUILD_LLI", "OFF")
Expand Down Expand Up @@ -208,8 +207,7 @@ fn main() {
}

// Select which path to use for the GenMC repo:
let (genmc_path, always_configure) = if let Some(genmc_src_path) = option_env!("GENMC_SRC_PATH")
{
let genmc_path = if let Some(genmc_src_path) = option_env!("GENMC_SRC_PATH") {
let genmc_src_path =
PathBuf::from_str(&genmc_src_path).expect("GENMC_SRC_PATH should contain a valid path");
assert!(
Expand All @@ -219,18 +217,14 @@ fn main() {
);
// Rebuild files in the given path change.
println!("cargo::rerun-if-changed={}", genmc_src_path.display());
// We disable `always_configure` when working with a local repository,
// since it increases compile times when working on `genmc-sys`.
(genmc_src_path, false)
genmc_src_path
} else {
// Download GenMC if required and ensure that the correct commit is checked out.
// If anything changed in the downloaded repository (e.g., the commit),
// we set `always_configure` to ensure there are no weird configs from previous builds.
downloading::download_genmc()
};

// Build all required components:
compile_cpp_dependencies(&genmc_path, always_configure);
compile_cpp_dependencies(&genmc_path);

// Only rebuild if anything changes:
// Note that we don't add the downloaded GenMC repo, since that should never be modified
Expand Down
2 changes: 1 addition & 1 deletion src/tools/miri/rust-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
55e86c996809902e8bbad512cfb4d2c18be446d9
4c4205163abcbd08948b3efab796c543ba1ea687
5 changes: 3 additions & 2 deletions src/tools/miri/src/bin/miri.rs
Original file line number Diff line number Diff line change
Expand Up @@ -309,8 +309,9 @@ impl rustc_driver::Callbacks for MiriDepCompilerCalls {
// We need to add #[used] symbols to exported_symbols for `lookup_link_section`.
// FIXME handle this somehow in rustc itself to avoid this hack.
local_providers.queries.exported_non_generic_symbols = |tcx, LocalCrate| {
let reachable_set = tcx
.with_stable_hashing_context(|mut hcx| tcx.reachable_set(()).to_sorted(&mut hcx, true));
let reachable_set = tcx.with_stable_hashing_context(|mut hcx| {
tcx.reachable_set(()).to_sorted(&mut hcx, true)
});
tcx.arena.alloc_from_iter(
// This is based on:
// https://github.com/rust-lang/rust/blob/2962e7c0089d5c136f4e9600b7abccfbbde4973d/compiler/rustc_codegen_ssa/src/back/symbol_export.rs#L62-L63
Expand Down
6 changes: 3 additions & 3 deletions src/tools/miri/src/borrow_tracker/stacked_borrows/item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ use crate::borrow_tracker::BorTag;
pub struct Item(u64);

// An Item contains 3 bitfields:
// * Bits 0-61 store a BorTag.
// * Bits 61-63 store a Permission.
// * Bit 64 stores a flag which indicates if we might have a protector.
// * Bits 0-60 store a BorTag (61 bits).
// * Bits 61-62 store a Permission (2 bits).
// * Bit 63 stores a flag which indicates if we might have a protector (1 bit).
// This is purely an optimization: if the bit is set, the tag *might* be
// in `protected_tags`, but if the bit is not set then the tag is definitely
// not in `protected_tags`.
Expand Down
Loading
Loading