Skip to content

Commit d09f798

Browse files
committed
Sync from rust 3fee0f1
2 parents 0b8e94e + 329cd79 commit d09f798

File tree

13 files changed

+72
-73
lines changed

13 files changed

+72
-73
lines changed

scripts/setup_rust_fork.sh

+5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ local-rebuild = true
3838
codegen-backends = ["cranelift"]
3939
deny-warnings = false
4040
verbose-tests = false
41+
# The cg_clif sysroot doesn't contain llvm tools and unless llvm_tools is
42+
# disabled bootstrap will crash trying to copy llvm tools for the bootstrap
43+
# compiler.
44+
llvm_tools = false
45+
4146
EOF
4247
popd
4348

src/abi/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ pub(crate) fn codegen_terminator_call<'tcx>(
376376
let instance = if let ty::FnDef(def_id, fn_args) = *func.layout().ty.kind() {
377377
let instance = ty::Instance::expect_resolve(
378378
fx.tcx,
379-
ty::ParamEnv::reveal_all(),
379+
ty::TypingEnv::fully_monomorphized(),
380380
def_id,
381381
fn_args,
382382
source_info.span,

src/archive.rs

-12
This file was deleted.

src/base.rs

+9-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
1111
use rustc_middle::mir::InlineAsmMacro;
1212
use rustc_middle::ty::TypeVisitableExt;
1313
use rustc_middle::ty::adjustment::PointerCoercion;
14-
use rustc_middle::ty::layout::FnAbiOf;
14+
use rustc_middle::ty::layout::{FnAbiOf, HasTypingEnv};
1515
use rustc_middle::ty::print::with_no_trimmed_paths;
1616

1717
use crate::BackendConfig;
@@ -673,7 +673,7 @@ fn codegen_stmt<'tcx>(
673673
let func_ref = fx.get_function_ref(
674674
Instance::resolve_for_fn_ptr(
675675
fx.tcx,
676-
ParamEnv::reveal_all(),
676+
ty::TypingEnv::fully_monomorphized(),
677677
def_id,
678678
args,
679679
)
@@ -848,14 +848,18 @@ fn codegen_stmt<'tcx>(
848848
lval.write_cvalue(fx, CValue::by_val(operand, box_layout));
849849
}
850850
Rvalue::NullaryOp(ref null_op, ty) => {
851-
assert!(lval.layout().ty.is_sized(fx.tcx, ParamEnv::reveal_all()));
851+
assert!(lval.layout().ty.is_sized(fx.tcx, fx.typing_env()));
852852
let layout = fx.layout_of(fx.monomorphize(ty));
853853
let val = match null_op {
854854
NullOp::SizeOf => layout.size.bytes(),
855855
NullOp::AlignOf => layout.align.abi.bytes(),
856856
NullOp::OffsetOf(fields) => fx
857857
.tcx
858-
.offset_of_subfield(ParamEnv::reveal_all(), layout, fields.iter())
858+
.offset_of_subfield(
859+
ty::TypingEnv::fully_monomorphized(),
860+
layout,
861+
fields.iter(),
862+
)
859863
.bytes(),
860864
NullOp::UbChecks => {
861865
let val = fx.tcx.sess.ub_checks();
@@ -927,6 +931,7 @@ fn codegen_stmt<'tcx>(
927931
| StatementKind::FakeRead(..)
928932
| StatementKind::Retag { .. }
929933
| StatementKind::PlaceMention(..)
934+
| StatementKind::BackwardIncompatibleDropHint { .. }
930935
| StatementKind::AscribeUserType(..) => {}
931936

932937
StatementKind::Coverage { .. } => unreachable!(),

src/common.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ fn clif_pair_type_from_ty<'tcx>(
103103

104104
/// Is a pointer to this type a wide ptr?
105105
pub(crate) fn has_ptr_meta<'tcx>(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> bool {
106-
if ty.is_sized(tcx, ParamEnv::reveal_all()) {
106+
if ty.is_sized(tcx, ty::TypingEnv::fully_monomorphized()) {
107107
return false;
108108
}
109109

110-
let tail = tcx.struct_tail_for_codegen(ty, ParamEnv::reveal_all());
110+
let tail = tcx.struct_tail_for_codegen(ty, ty::TypingEnv::fully_monomorphized());
111111
match tail.kind() {
112112
ty::Foreign(..) => false,
113113
ty::Str | ty::Slice(..) | ty::Dynamic(..) => true,
@@ -339,9 +339,9 @@ impl<'tcx> rustc_abi::HasDataLayout for FunctionCx<'_, '_, 'tcx> {
339339
}
340340
}
341341

342-
impl<'tcx> layout::HasParamEnv<'tcx> for FunctionCx<'_, '_, 'tcx> {
343-
fn param_env(&self) -> ParamEnv<'tcx> {
344-
ParamEnv::reveal_all()
342+
impl<'tcx> layout::HasTypingEnv<'tcx> for FunctionCx<'_, '_, 'tcx> {
343+
fn typing_env(&self) -> ty::TypingEnv<'tcx> {
344+
ty::TypingEnv::fully_monomorphized()
345345
}
346346
}
347347

@@ -358,7 +358,7 @@ impl<'tcx> FunctionCx<'_, '_, 'tcx> {
358358
{
359359
self.instance.instantiate_mir_and_normalize_erasing_regions(
360360
self.tcx,
361-
ty::ParamEnv::reveal_all(),
361+
ty::TypingEnv::fully_monomorphized(),
362362
ty::EarlyBinder::bind(value),
363363
)
364364
}
@@ -497,9 +497,9 @@ impl<'tcx> rustc_abi::HasDataLayout for RevealAllLayoutCx<'tcx> {
497497
}
498498
}
499499

500-
impl<'tcx> layout::HasParamEnv<'tcx> for RevealAllLayoutCx<'tcx> {
501-
fn param_env(&self) -> ParamEnv<'tcx> {
502-
ParamEnv::reveal_all()
500+
impl<'tcx> layout::HasTypingEnv<'tcx> for RevealAllLayoutCx<'tcx> {
501+
fn typing_env(&self) -> ty::TypingEnv<'tcx> {
502+
ty::TypingEnv::fully_monomorphized()
503503
}
504504
}
505505

src/constant.rs

+9-3
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ pub(crate) fn eval_mir_constant<'tcx>(
7878
let cv = fx.monomorphize(constant.const_);
7979
// This cannot fail because we checked all required_consts in advance.
8080
let val = cv
81-
.eval(fx.tcx, ty::ParamEnv::reveal_all(), constant.span)
81+
.eval(fx.tcx, ty::TypingEnv::fully_monomorphized(), constant.span)
8282
.expect("erroneous constant missed by mono item collection");
8383
(val, cv.ty())
8484
}
@@ -265,8 +265,13 @@ fn data_id_for_static(
265265
assert!(!definition);
266266
assert!(!tcx.is_mutable_static(def_id));
267267

268-
let ty = instance.ty(tcx, ParamEnv::reveal_all());
269-
let align = tcx.layout_of(ParamEnv::reveal_all().and(ty)).unwrap().align.pref.bytes();
268+
let ty = instance.ty(tcx, ty::TypingEnv::fully_monomorphized());
269+
let align = tcx
270+
.layout_of(ty::TypingEnv::fully_monomorphized().as_query_input(ty))
271+
.unwrap()
272+
.align
273+
.pref
274+
.bytes();
270275

271276
let linkage = if import_linkage == rustc_middle::mir::mono::Linkage::ExternalWeak
272277
|| import_linkage == rustc_middle::mir::mono::Linkage::WeakAny
@@ -578,6 +583,7 @@ pub(crate) fn mir_operand_get_const_val<'tcx>(
578583
| StatementKind::PlaceMention(..)
579584
| StatementKind::Coverage(_)
580585
| StatementKind::ConstEvalCounter
586+
| StatementKind::BackwardIncompatibleDropHint { .. }
581587
| StatementKind::Nop => {}
582588
}
583589
}

src/debuginfo/mod.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ impl DebugContext {
210210

211211
type_names::push_generic_params(
212212
tcx,
213-
tcx.normalize_erasing_regions(ty::ParamEnv::reveal_all(), args),
213+
tcx.normalize_erasing_regions(ty::TypingEnv::fully_monomorphized(), args),
214214
&mut name,
215215
);
216216

@@ -275,8 +275,10 @@ impl DebugContext {
275275
let span = tcx.def_span(def_id);
276276
let (file_id, line, _column) = self.get_span_loc(tcx, span, span);
277277

278-
let static_type = Instance::mono(tcx, def_id).ty(tcx, ty::ParamEnv::reveal_all());
279-
let static_layout = tcx.layout_of(ty::ParamEnv::reveal_all().and(static_type)).unwrap();
278+
let static_type = Instance::mono(tcx, def_id).ty(tcx, ty::TypingEnv::fully_monomorphized());
279+
let static_layout = tcx
280+
.layout_of(ty::TypingEnv::fully_monomorphized().as_query_input(static_type))
281+
.unwrap();
280282
// FIXME use the actual type layout
281283
let type_id = self.debug_type(tcx, type_dbg, static_type);
282284

src/inline_asm.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ pub(crate) fn codegen_inline_asm_terminator<'tcx>(
9292
if let ty::FnDef(def_id, args) = *const_.ty().kind() {
9393
let instance = ty::Instance::resolve_for_fn_ptr(
9494
fx.tcx,
95-
ty::ParamEnv::reveal_all(),
95+
ty::TypingEnv::fully_monomorphized(),
9696
def_id,
9797
args,
9898
)
@@ -227,11 +227,11 @@ pub(crate) fn codegen_naked_asm<'tcx>(
227227
InlineAsmOperand::Const { ref value } => {
228228
let cv = instance.instantiate_mir_and_normalize_erasing_regions(
229229
tcx,
230-
ty::ParamEnv::reveal_all(),
230+
ty::TypingEnv::fully_monomorphized(),
231231
ty::EarlyBinder::bind(value.const_),
232232
);
233233
let const_value = cv
234-
.eval(tcx, ty::ParamEnv::reveal_all(), value.span)
234+
.eval(tcx, ty::TypingEnv::fully_monomorphized(), value.span)
235235
.expect("erroneous constant missed by mono item collection");
236236

237237
let value = rustc_codegen_ssa::common::asm_const_to_str(
@@ -250,13 +250,13 @@ pub(crate) fn codegen_naked_asm<'tcx>(
250250

251251
let const_ = instance.instantiate_mir_and_normalize_erasing_regions(
252252
tcx,
253-
ty::ParamEnv::reveal_all(),
253+
ty::TypingEnv::fully_monomorphized(),
254254
ty::EarlyBinder::bind(value.const_),
255255
);
256256
if let ty::FnDef(def_id, args) = *const_.ty().kind() {
257257
let instance = ty::Instance::resolve_for_fn_ptr(
258258
tcx,
259-
ty::ParamEnv::reveal_all(),
259+
ty::TypingEnv::fully_monomorphized(),
260260
def_id,
261261
args,
262262
)

src/intrinsics/mod.rs

+15-8
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ mod simd;
2020
use cranelift_codegen::ir::AtomicRmwOp;
2121
use rustc_middle::ty;
2222
use rustc_middle::ty::GenericArgsRef;
23-
use rustc_middle::ty::layout::{HasParamEnv, ValidityRequirement};
23+
use rustc_middle::ty::layout::ValidityRequirement;
2424
use rustc_middle::ty::print::{with_no_trimmed_paths, with_no_visible_paths};
2525
use rustc_span::source_map::Spanned;
2626
use rustc_span::symbol::{Symbol, sym};
@@ -453,11 +453,6 @@ fn codegen_regular_intrinsic_call<'tcx>(
453453
fx.bcx.ins().trap(TrapCode::user(2).unwrap());
454454
return Ok(());
455455
}
456-
sym::likely | sym::unlikely => {
457-
intrinsic_args!(fx, args => (a); intrinsic);
458-
459-
ret.write_cvalue(fx, a);
460-
}
461456
sym::breakpoint => {
462457
intrinsic_args!(fx, args => (); intrinsic);
463458

@@ -687,7 +682,10 @@ fn codegen_regular_intrinsic_call<'tcx>(
687682
if let Some(requirement) = requirement {
688683
let do_panic = !fx
689684
.tcx
690-
.check_validity_requirement((requirement, fx.param_env().and(ty)))
685+
.check_validity_requirement((
686+
requirement,
687+
ty::TypingEnv::fully_monomorphized().as_query_input(ty),
688+
))
691689
.expect("expect to have layout during codegen");
692690

693691
if do_panic {
@@ -746,7 +744,11 @@ fn codegen_regular_intrinsic_call<'tcx>(
746744

747745
let const_val = fx
748746
.tcx
749-
.const_eval_instance(ParamEnv::reveal_all(), instance, source_info.span)
747+
.const_eval_instance(
748+
ty::TypingEnv::fully_monomorphized(),
749+
instance,
750+
source_info.span,
751+
)
750752
.unwrap();
751753
let val = crate::constant::codegen_const_value(fx, const_val, ret.layout().ty);
752754
ret.write_cvalue(fx, val);
@@ -1267,6 +1269,11 @@ fn codegen_regular_intrinsic_call<'tcx>(
12671269
);
12681270
}
12691271

1272+
sym::cold_path => {
1273+
// This is a no-op. The intrinsic is just a hint to the optimizer.
1274+
// We still have an impl here to avoid it being turned into a call.
1275+
}
1276+
12701277
// Unimplemented intrinsics must have a fallback body. The fallback body is obtained
12711278
// by converting the `InstanceKind::Intrinsic` to an `InstanceKind::Item`.
12721279
_ => {

src/lib.rs

+1-14
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ use rustc_codegen_ssa::CodegenResults;
4343
use rustc_codegen_ssa::back::versioned_llvm_target;
4444
use rustc_codegen_ssa::traits::CodegenBackend;
4545
use rustc_data_structures::profiling::SelfProfilerRef;
46-
use rustc_errors::ErrorGuaranteed;
4746
use rustc_metadata::EncodedMetadata;
4847
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
4948
use rustc_session::Session;
@@ -56,7 +55,6 @@ use crate::prelude::*;
5655
mod abi;
5756
mod allocator;
5857
mod analyze;
59-
mod archive;
6058
mod base;
6159
mod cast;
6260
mod codegen_i128;
@@ -100,7 +98,7 @@ mod prelude {
10098
pub(crate) use rustc_middle::mir::{self, *};
10199
pub(crate) use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
102100
pub(crate) use rustc_middle::ty::{
103-
self, FloatTy, Instance, InstanceKind, IntTy, ParamEnv, Ty, TyCtxt, UintTy,
101+
self, FloatTy, Instance, InstanceKind, IntTy, Ty, TyCtxt, UintTy,
104102
};
105103
pub(crate) use rustc_span::Span;
106104

@@ -249,17 +247,6 @@ impl CodegenBackend for CraneliftCodegenBackend {
249247
self.config.borrow().as_ref().unwrap(),
250248
)
251249
}
252-
253-
fn link(
254-
&self,
255-
sess: &Session,
256-
codegen_results: CodegenResults,
257-
outputs: &OutputFilenames,
258-
) -> Result<(), ErrorGuaranteed> {
259-
use rustc_codegen_ssa::back::link::link_binary;
260-
261-
link_binary(sess, &crate::archive::ArArchiveBuilderBuilder, &codegen_results, outputs)
262-
}
263250
}
264251

265252
fn target_triple(sess: &Session) -> target_lexicon::Triple {

src/main_shim.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ pub(crate) fn maybe_create_entry_wrapper(
4949
// regions must appear in the argument
5050
// listing.
5151
let main_ret_ty = tcx.normalize_erasing_regions(
52-
ty::ParamEnv::reveal_all(),
52+
ty::TypingEnv::fully_monomorphized(),
5353
main_ret_ty.no_bound_vars().unwrap(),
5454
);
5555

@@ -113,7 +113,7 @@ pub(crate) fn maybe_create_entry_wrapper(
113113
.unwrap();
114114
let report = Instance::expect_resolve(
115115
tcx,
116-
ParamEnv::reveal_all(),
116+
ty::TypingEnv::fully_monomorphized(),
117117
report.def_id,
118118
tcx.mk_args(&[GenericArg::from(main_ret_ty)]),
119119
DUMMY_SP,
@@ -139,7 +139,7 @@ pub(crate) fn maybe_create_entry_wrapper(
139139
let start_def_id = tcx.require_lang_item(LangItem::Start, None);
140140
let start_instance = Instance::expect_resolve(
141141
tcx,
142-
ParamEnv::reveal_all(),
142+
ty::TypingEnv::fully_monomorphized(),
143143
start_def_id,
144144
tcx.mk_args(&[main_ret_ty.into()]),
145145
DUMMY_SP,

src/unsize.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
//! [`PointerCoercion::Unsize`]: `rustc_middle::ty::adjustment::PointerCoercion::Unsize`
44
55
use rustc_codegen_ssa::base::validate_trivial_unsize;
6+
use rustc_middle::ty::layout::HasTypingEnv;
67
use rustc_middle::ty::print::{with_no_trimmed_paths, with_no_visible_paths};
78

89
use crate::base::codegen_panic_nounwind;
@@ -23,7 +24,7 @@ pub(crate) fn unsized_info<'tcx>(
2324
old_info: Option<Value>,
2425
) -> Value {
2526
let (source, target) =
26-
fx.tcx.struct_lockstep_tails_for_codegen(source, target, ParamEnv::reveal_all());
27+
fx.tcx.struct_lockstep_tails_for_codegen(source, target, fx.typing_env());
2728
match (&source.kind(), &target.kind()) {
2829
(&ty::Array(_, len), &ty::Slice(_)) => fx.bcx.ins().iconst(
2930
fx.pointer_type,

0 commit comments

Comments
 (0)