Skip to content

Commit 787c6f3

Browse files
authored
Rollup merge of #94308 - tmiasko:normalize-main-ret-ty, r=oli-obk
Normalize main return type during mono item collection & codegen The issue can be observed with `-Zprint-mono-items=lazy` in: ```rust #![feature(termination_trait_lib)] fn main() -> impl std::process::Termination { } ``` ``` BEFORE: MONO_ITEM fn std::rt::lang_start::<impl std::process::Termination> ````@@```` t.93933fa2-cgu.2[External] AFTER: MONO_ITEM fn std::rt::lang_start::<()> ````@@```` t.df56e625-cgu.1[External] ```
2 parents 6b03a46 + f047af2 commit 787c6f3

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

compiler/rustc_codegen_cranelift/src/main_shim.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ pub(crate) fn maybe_create_entry_wrapper(
5151
// late-bound regions, since late-bound
5252
// regions must appear in the argument
5353
// listing.
54-
let main_ret_ty = tcx.erase_regions(main_ret_ty.no_bound_vars().unwrap());
54+
let main_ret_ty = tcx.normalize_erasing_regions(
55+
ty::ParamEnv::reveal_all(),
56+
main_ret_ty.no_bound_vars().unwrap(),
57+
);
5558

5659
let cmain_sig = Signature {
5760
params: vec![

compiler/rustc_codegen_ssa/src/base.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,10 @@ pub fn maybe_create_entry_wrapper<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
407407
// late-bound regions, since late-bound
408408
// regions must appear in the argument
409409
// listing.
410-
let main_ret_ty = cx.tcx().erase_regions(main_ret_ty.no_bound_vars().unwrap());
410+
let main_ret_ty = cx.tcx().normalize_erasing_regions(
411+
ty::ParamEnv::reveal_all(),
412+
main_ret_ty.no_bound_vars().unwrap(),
413+
);
411414

412415
let Some(llfn) = cx.declare_c_main(llfty) else {
413416
// FIXME: We should be smart and show a better diagnostic here.

compiler/rustc_monomorphize/src/collector.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -1270,7 +1270,10 @@ impl<'v> RootCollector<'_, 'v> {
12701270
// late-bound regions, since late-bound
12711271
// regions must appear in the argument
12721272
// listing.
1273-
let main_ret_ty = self.tcx.erase_regions(main_ret_ty.no_bound_vars().unwrap());
1273+
let main_ret_ty = self.tcx.normalize_erasing_regions(
1274+
ty::ParamEnv::reveal_all(),
1275+
main_ret_ty.no_bound_vars().unwrap(),
1276+
);
12741277

12751278
let start_instance = Instance::resolve(
12761279
self.tcx,

0 commit comments

Comments
 (0)