Skip to content

Rollup of 8 pull requests #139826

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

Merged
merged 28 commits into from
Apr 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
5cda2a9
run all 'thread' tests on FreeBSD, and also on 32bit
RalfJung Apr 10, 2025
f254ab2
Merge pull request #4266 from RalfJung/freebsd
RalfJung Apr 10, 2025
2d37173
Bump crossbeam-channel from 0.5.14 to 0.5.15
dependabot[bot] Apr 10, 2025
d1f901a
Merge pull request #4267 from rust-lang/dependabot/cargo/crossbeam-ch…
RalfJung Apr 10, 2025
f243cb8
Implement RtlNtStatusToDosError and shim test for it
CraftSpider Apr 10, 2025
7284100
Merge pull request #4261 from CraftSpider/windows-rtl-to-dos
RalfJung Apr 10, 2025
49cc860
fix build fail on macos bacause of libffi-sys 2.3.0; This updates lib…
LorrensP-2158466 Apr 11, 2025
52b204e
Merge pull request #4268 from LorrensP-2158466/update-libffi
saethlin Apr 11, 2025
c462002
Preparing for merge from rustc
Apr 12, 2025
352545f
Merge from rustc
Apr 12, 2025
59a3730
fmt
Apr 12, 2025
1f8cb69
Merge pull request #4270 from rust-lang/rustup-2025-04-12
oli-obk Apr 12, 2025
86e2a07
opt-dist: use executable-extension for host llvm-profdata
ognevny Apr 12, 2025
ed5f31a
Avoid unused clones in Cloned<I> and Copied<I>
thaliaarchi Apr 13, 2025
f3344ef
tests: use `compiletest-ignore-dir` for bootstrap self-tests
jieyouxu Apr 14, 2025
6a8718c
Add test for issue 34834
reddevilmidzy Apr 14, 2025
1b46969
Specify `--print info=file` syntax in `--help`
clubby789 Apr 14, 2025
758e99a
update lockfile
RalfJung Apr 14, 2025
4b63362
Use `newtype_index!`-generated types more idiomatically
yotamofek Apr 14, 2025
cb22c1d
Allow (but don't require) `#[unsafe(naked)]` so that `compiler-builti…
folkertdev Apr 14, 2025
efca25f
Rollup merge of #139745 - thaliaarchi:iter-unused-clone-copy, r=joboet
matthiaskrgr Apr 14, 2025
9b564df
Rollup merge of #139757 - ognevny:opt-dist-hostllvm, r=Kobzol
matthiaskrgr Apr 14, 2025
bf247c7
Rollup merge of #139778 - reddevilmidzy:add-success-test, r=lcnr
matthiaskrgr Apr 14, 2025
6b3531e
Rollup merge of #139783 - jieyouxu:ignore-dir, r=Zalathar
matthiaskrgr Apr 14, 2025
1bceed8
Rollup merge of #139797 - folkertdev:naked-allow-unsafe, r=tgross35
matthiaskrgr Apr 14, 2025
7dc3fec
Rollup merge of #139799 - clubby789:print=file, r=jieyouxu
matthiaskrgr Apr 14, 2025
04d1052
Rollup merge of #139811 - yotamofek:pr/newtype_cleanups, r=oli-obk
matthiaskrgr Apr 14, 2025
8587c95
Rollup merge of #139813 - RalfJung:miri-sync, r=RalfJung
matthiaskrgr Apr 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
8 changes: 4 additions & 4 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2038,19 +2038,19 @@ dependencies = [

[[package]]
name = "libffi"
version = "3.2.0"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce826c243048e3d5cec441799724de52e2d42f820468431fc3fceee2341871e2"
checksum = "4a9434b6fc77375fb624698d5f8c49d7e80b10d59eb1219afda27d1f824d4074"
dependencies = [
"libc",
"libffi-sys",
]

[[package]]
name = "libffi-sys"
version = "2.3.0"
version = "3.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f36115160c57e8529781b4183c2bb51fdc1f6d6d1ed345591d84be7703befb3c"
checksum = "ead36a2496acfc8edd6cc32352110e9478ac5b9b5f5b9856ebd3d28019addb84"
dependencies = [
"cc",
]
Expand Down
3 changes: 1 addition & 2 deletions compiler/rustc_ast_lowering/src/path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -448,8 +448,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {

generic_args.args.insert_many(
0,
(start.as_u32()..end.as_u32()).map(|i| {
let id = NodeId::from_u32(i);
(start..end).map(|id| {
let l = self.lower_lifetime_anon_in_path(id, elided_lifetime_span);
GenericArg::Lifetime(l)
}),
Expand Down
3 changes: 1 addition & 2 deletions compiler/rustc_borrowck/src/region_infer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,7 @@ fn sccs_info<'tcx>(infcx: &BorrowckInferCtxt<'tcx>, sccs: &ConstraintSccs) {
let num_components = sccs.num_sccs();
let mut components = vec![FxIndexSet::default(); num_components];

for (reg_var_idx, scc_idx) in sccs.scc_indices().iter().enumerate() {
let reg_var = ty::RegionVid::from_usize(reg_var_idx);
for (reg_var, scc_idx) in sccs.scc_indices().iter_enumerated() {
let origin = var_to_origin.get(&reg_var).unwrap_or(&RegionCtxt::Unknown);
components[scc_idx.as_usize()].insert((reg_var, *origin));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ use std::collections::hash_map::Entry;
use rustc_codegen_ssa::mir::debuginfo::{DebugScope, FunctionDebugContext};
use rustc_codegen_ssa::traits::*;
use rustc_data_structures::fx::FxHashMap;
use rustc_index::Idx;
use rustc_index::bit_set::DenseBitSet;
use rustc_middle::mir::{Body, SourceScope};
use rustc_middle::ty::layout::{FnAbiOf, HasTypingEnv};
Expand Down Expand Up @@ -43,8 +42,7 @@ pub(crate) fn compute_mir_scopes<'ll, 'tcx>(
let mut instantiated = DenseBitSet::new_empty(mir.source_scopes.len());
let mut discriminators = FxHashMap::default();
// Instantiate all scopes.
for idx in 0..mir.source_scopes.len() {
let scope = SourceScope::new(idx);
for scope in mir.source_scopes.indices() {
make_mir_scope(
cx,
instance,
Expand Down
9 changes: 3 additions & 6 deletions compiler/rustc_hir/src/definitions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,9 @@ impl DefPathTable {
debug_assert_eq!(self.stable_crate_id, def_path_hash.stable_crate_id());
let local_hash = def_path_hash.local_hash();

let index = {
let index = DefIndex::from(self.index_to_key.len());
debug!("DefPathTable::insert() - {:?} <-> {:?}", key, index);
self.index_to_key.push(key);
index
};
let index = self.index_to_key.push(key);
debug!("DefPathTable::insert() - {key:?} <-> {index:?}");

self.def_path_hashes.push(local_hash);
debug_assert!(self.def_path_hashes.len() == self.index_to_key.len());

Expand Down
7 changes: 2 additions & 5 deletions compiler/rustc_hir_analysis/src/check/compare_impl_item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ pub(super) fn collect_return_position_impl_trait_in_trait_tys<'tcx>(
// with placeholders, which imply nothing about outlives bounds, and then
// prove below that the hidden types are well formed.
let universe = infcx.create_next_universe();
let mut idx = 0;
let mut idx = ty::BoundVar::ZERO;
let mapping: FxIndexMap<_, _> = collector
.types
.iter()
Expand All @@ -623,10 +623,7 @@ pub(super) fn collect_return_position_impl_trait_in_trait_tys<'tcx>(
tcx,
ty::Placeholder {
universe,
bound: ty::BoundTy {
var: ty::BoundVar::from_usize(idx),
kind: ty::BoundTyKind::Anon,
},
bound: ty::BoundTy { var: idx, kind: ty::BoundTyKind::Anon },
},
),
)
Expand Down
4 changes: 1 addition & 3 deletions compiler/rustc_infer/src/infer/region_constraints/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -618,9 +618,7 @@ impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
RegionVid::from(value_count)..RegionVid::from(self.storage.unification_table.len());
(
range.clone(),
(range.start.index()..range.end.index())
.map(|index| self.storage.var_infos[ty::RegionVid::from(index)].origin)
.collect(),
(range.start..range.end).map(|index| self.storage.var_infos[index].origin).collect(),
)
}

Expand Down
7 changes: 4 additions & 3 deletions compiler/rustc_infer/src/infer/snapshot/fudge.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@ fn const_vars_since_snapshot<'tcx>(
snapshot_var_len: usize,
) -> (Range<ConstVid>, Vec<ConstVariableOrigin>) {
let range = vars_since_snapshot(table, snapshot_var_len);
let range = range.start.vid..range.end.vid;

(
range.start.vid..range.end.vid,
(range.start.index()..range.end.index())
.map(|index| match table.probe_value(ConstVid::from_u32(index)) {
range.clone(),
range
.map(|index| match table.probe_value(index) {
ConstVariableValue::Known { value: _ } => {
ConstVariableOrigin { param_def_id: None, span: rustc_span::DUMMY_SP }
}
Expand Down
6 changes: 3 additions & 3 deletions compiler/rustc_middle/src/mir/pretty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -531,12 +531,12 @@ fn write_mir_intro<'tcx>(

// construct a scope tree and write it out
let mut scope_tree: FxHashMap<SourceScope, Vec<SourceScope>> = Default::default();
for (index, scope_data) in body.source_scopes.iter().enumerate() {
for (index, scope_data) in body.source_scopes.iter_enumerated() {
if let Some(parent) = scope_data.parent_scope {
scope_tree.entry(parent).or_default().push(SourceScope::new(index));
scope_tree.entry(parent).or_default().push(index);
} else {
// Only the argument scope has no parent, because it's the root.
assert_eq!(index, OUTERMOST_SOURCE_SCOPE.index());
assert_eq!(index, OUTERMOST_SOURCE_SCOPE);
}
}

Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_middle/src/ty/fold.rs
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ impl<'tcx> TyCtxt<'tcx> {
where
T: TypeFoldable<TyCtxt<'tcx>>,
{
let shift_bv = |bv: ty::BoundVar| ty::BoundVar::from_usize(bv.as_usize() + bound_vars);
let shift_bv = |bv: ty::BoundVar| bv + bound_vars;
self.replace_escaping_bound_vars_uncached(
value,
FnMutDelegate {
Expand Down
12 changes: 3 additions & 9 deletions compiler/rustc_middle/src/ty/visit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -231,29 +231,23 @@ impl MaxUniverse {
impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for MaxUniverse {
fn visit_ty(&mut self, t: Ty<'tcx>) {
if let ty::Placeholder(placeholder) = t.kind() {
self.max_universe = ty::UniverseIndex::from_u32(
self.max_universe.as_u32().max(placeholder.universe.as_u32()),
);
self.max_universe = self.max_universe.max(placeholder.universe);
}

t.super_visit_with(self)
}

fn visit_const(&mut self, c: ty::consts::Const<'tcx>) {
if let ty::ConstKind::Placeholder(placeholder) = c.kind() {
self.max_universe = ty::UniverseIndex::from_u32(
self.max_universe.as_u32().max(placeholder.universe.as_u32()),
);
self.max_universe = self.max_universe.max(placeholder.universe);
}

c.super_visit_with(self)
}

fn visit_region(&mut self, r: ty::Region<'tcx>) {
if let ty::RePlaceholder(placeholder) = r.kind() {
self.max_universe = ty::UniverseIndex::from_u32(
self.max_universe.as_u32().max(placeholder.universe.as_u32()),
);
self.max_universe = self.max_universe.max(placeholder.universe);
}
}
}
4 changes: 2 additions & 2 deletions compiler/rustc_mir_build/src/thir/cx/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ impl<'tcx> ThirBuildCx<'tcx> {
let pointer_target = ExprKind::Field {
lhs: self.thir.exprs.push(expr),
variant_index: FIRST_VARIANT,
name: FieldIdx::from(0u32),
name: FieldIdx::ZERO,
};
let arg = Expr { temp_lifetime, ty: pin_ty, span, kind: pointer_target };
let arg = self.thir.exprs.push(arg);
Expand Down Expand Up @@ -226,7 +226,7 @@ impl<'tcx> ThirBuildCx<'tcx> {
adt_def: self.tcx.adt_def(pin_did),
variant_index: FIRST_VARIANT,
args,
fields: Box::new([FieldExpr { name: FieldIdx::from(0u32), expr }]),
fields: Box::new([FieldExpr { name: FieldIdx::ZERO, expr }]),
user_ty: None,
base: AdtExprBase::None,
}));
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_mir_transform/src/coroutine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ struct TransformVisitor<'tcx> {

impl<'tcx> TransformVisitor<'tcx> {
fn insert_none_ret_block(&self, body: &mut Body<'tcx>) -> BasicBlock {
let block = BasicBlock::new(body.basic_blocks.len());
let block = body.basic_blocks.next_index();
let source_info = SourceInfo::outermost(body.span);

let none_value = match self.coroutine_kind {
Expand Down Expand Up @@ -1193,7 +1193,7 @@ fn insert_panic_block<'tcx>(
body: &mut Body<'tcx>,
message: AssertMessage<'tcx>,
) -> BasicBlock {
let assert_block = BasicBlock::new(body.basic_blocks.len());
let assert_block = body.basic_blocks.next_index();
let kind = TerminatorKind::Assert {
cond: Operand::Constant(Box::new(ConstOperand {
span: body.span,
Expand Down
17 changes: 8 additions & 9 deletions compiler/rustc_mir_transform/src/elaborate_drop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -258,17 +258,16 @@ where
) -> Vec<(Place<'tcx>, Option<D::Path>)> {
variant
.fields
.iter()
.enumerate()
.map(|(i, f)| {
let field = FieldIdx::new(i);
let subpath = self.elaborator.field_subpath(variant_path, field);
.iter_enumerated()
.map(|(field_idx, field)| {
let subpath = self.elaborator.field_subpath(variant_path, field_idx);
let tcx = self.tcx();

assert_eq!(self.elaborator.typing_env().typing_mode, ty::TypingMode::PostAnalysis);
let field_ty = match tcx
.try_normalize_erasing_regions(self.elaborator.typing_env(), f.ty(tcx, args))
{
let field_ty = match tcx.try_normalize_erasing_regions(
self.elaborator.typing_env(),
field.ty(tcx, args),
) {
Ok(t) => t,
Err(_) => Ty::new_error(
self.tcx(),
Expand All @@ -279,7 +278,7 @@ where
),
};

(tcx.mk_place_field(base_place, field, field_ty), subpath)
(tcx.mk_place_field(base_place, field_idx, field_ty), subpath)
})
.collect()
}
Expand Down
12 changes: 6 additions & 6 deletions compiler/rustc_mir_transform/src/inline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -903,9 +903,9 @@ fn inline_call<'tcx, I: Inliner<'tcx>>(

let mut integrator = Integrator {
args: &args,
new_locals: Local::new(caller_body.local_decls.len())..,
new_scopes: SourceScope::new(caller_body.source_scopes.len())..,
new_blocks: BasicBlock::new(caller_body.basic_blocks.len())..,
new_locals: caller_body.local_decls.next_index()..,
new_scopes: caller_body.source_scopes.next_index()..,
new_blocks: caller_body.basic_blocks.next_index()..,
destination: destination_local,
callsite_scope: caller_body.source_scopes[callsite.source_info.scope].clone(),
callsite,
Expand Down Expand Up @@ -1169,21 +1169,21 @@ impl Integrator<'_, '_> {
if idx < self.args.len() {
self.args[idx]
} else {
Local::new(self.new_locals.start.index() + (idx - self.args.len()))
self.new_locals.start + (idx - self.args.len())
}
};
trace!("mapping local `{:?}` to `{:?}`", local, new);
new
}

fn map_scope(&self, scope: SourceScope) -> SourceScope {
let new = SourceScope::new(self.new_scopes.start.index() + scope.index());
let new = self.new_scopes.start + scope.index();
trace!("mapping scope `{:?}` to `{:?}`", scope, new);
new
}

fn map_block(&self, block: BasicBlock) -> BasicBlock {
let new = BasicBlock::new(self.new_blocks.start.index() + block.index());
let new = self.new_blocks.start + block.index();
trace!("mapping block `{:?}` to `{:?}`", block, new);
new
}
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_mir_transform/src/patch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ impl<'tcx> MirPatch<'tcx> {

/// Queues the addition of a new basic block.
pub(crate) fn new_block(&mut self, data: BasicBlockData<'tcx>) -> BasicBlock {
let block = BasicBlock::new(self.term_patch_map.len());
let block = self.term_patch_map.next_index();
debug!("MirPatch: new_block: {:?}: {:?}", block, data);
self.new_blocks.push(data);
self.term_patch_map.push(None);
Expand Down
14 changes: 9 additions & 5 deletions compiler/rustc_mir_transform/src/promote_consts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ use either::{Left, Right};
use rustc_const_eval::check_consts::{ConstCx, qualifs};
use rustc_data_structures::fx::FxHashSet;
use rustc_hir as hir;
use rustc_index::{Idx, IndexSlice, IndexVec};
use rustc_index::{IndexSlice, IndexVec};
use rustc_middle::mir::visit::{MutVisitor, MutatingUseContext, PlaceContext, Visitor};
use rustc_middle::mir::*;
use rustc_middle::ty::{self, GenericArgs, List, Ty, TyCtxt, TypeVisitableExt};
Expand Down Expand Up @@ -864,17 +864,21 @@ impl<'a, 'tcx> Promoter<'a, 'tcx> {
new_temp
}

fn promote_candidate(mut self, candidate: Candidate, next_promoted_id: usize) -> Body<'tcx> {
fn promote_candidate(
mut self,
candidate: Candidate,
next_promoted_index: Promoted,
) -> Body<'tcx> {
let def = self.source.source.def_id();
let (mut rvalue, promoted_op) = {
let promoted = &mut self.promoted;
let promoted_id = Promoted::new(next_promoted_id);
let tcx = self.tcx;
let mut promoted_operand = |ty, span| {
promoted.span = span;
promoted.local_decls[RETURN_PLACE] = LocalDecl::new(ty, span);
let args = tcx.erase_regions(GenericArgs::identity_for_item(tcx, def));
let uneval = mir::UnevaluatedConst { def, args, promoted: Some(promoted_id) };
let uneval =
mir::UnevaluatedConst { def, args, promoted: Some(next_promoted_index) };

ConstOperand { span, user_ty: None, const_: Const::Unevaluated(uneval, ty) }
};
Expand Down Expand Up @@ -1034,7 +1038,7 @@ fn promote_candidates<'tcx>(
required_consts: Vec::new(),
};

let mut promoted = promoter.promote_candidate(candidate, promotions.len());
let mut promoted = promoter.promote_candidate(candidate, promotions.next_index());
promoted.source.promoted = Some(promotions.next_index());
promotions.push(promoted);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ where
// exist at all (see the FIXME at the start of this method), we have to deal with
// them for now.
delegate.instantiate_canonical_var_with_infer(info, span, |idx| {
ty::UniverseIndex::from(prev_universe.index() + idx.index())
prev_universe + idx.index()
})
} else if info.is_existential() {
// As an optimization we sometimes avoid creating a new inference variable here.
Expand Down
6 changes: 6 additions & 0 deletions compiler/rustc_parse/src/validate_attr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,12 @@ pub fn check_attribute_safety(psess: &ParseSess, safety: AttributeSafety, attr:
}
}
} else if let Safety::Unsafe(unsafe_span) = attr_item.unsafety {
// Allow (but don't require) `#[unsafe(naked)]` so that compiler-builtins can upgrade to it.
// FIXME(#139797): remove this special case when compiler-builtins has upgraded.
if attr.has_name(sym::naked) {
return;
}

psess.dcx().emit_err(errors::InvalidAttrUnsafe {
span: unsafe_span,
name: attr_item.path.clone(),
Expand Down
7 changes: 3 additions & 4 deletions compiler/rustc_passes/src/liveness.rs
Original file line number Diff line number Diff line change
Expand Up @@ -578,8 +578,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
where
F: FnMut(Variable) -> bool,
{
for var_idx in 0..self.ir.var_kinds.len() {
let var = Variable::from(var_idx);
for var in self.ir.var_kinds.indices() {
if test(var) {
write!(wr, " {var:?}")?;
}
Expand Down Expand Up @@ -609,8 +608,8 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
debug!(
"^^ liveness computation results for body {} (entry={:?})",
{
for ln_idx in 0..self.ir.lnks.len() {
debug!("{:?}", self.ln_str(LiveNode::from(ln_idx)));
for ln_idx in self.ir.lnks.indices() {
debug!("{:?}", self.ln_str(ln_idx));
}
hir_id
},
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_resolve/src/late.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1948,7 +1948,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {

self.record_lifetime_res(
anchor_id,
LifetimeRes::ElidedAnchor { start: id, end: NodeId::from_u32(id.as_u32() + 1) },
LifetimeRes::ElidedAnchor { start: id, end: id + 1 },
LifetimeElisionCandidate::Ignore,
);
self.resolve_anonymous_lifetime(&lt, anchor_id, true);
Expand Down
Loading
Loading