11use cranelift_frontend:: { FunctionBuilder , FunctionBuilderContext } ;
22use rustc_hir:: LangItem ;
33use rustc_middle:: ty:: { AssocKind , GenericArg } ;
4- use rustc_session:: config:: { EntryFnType , sigpipe } ;
4+ use rustc_session:: config:: EntryFnType ;
55use rustc_span:: DUMMY_SP ;
66use rustc_span:: symbol:: Ident ;
77
@@ -15,10 +15,9 @@ pub(crate) fn maybe_create_entry_wrapper(
1515 is_jit : bool ,
1616 is_primary_cgu : bool ,
1717) {
18- let ( main_def_id, ( is_main_fn , sigpipe) ) = match tcx. entry_fn ( ( ) ) {
18+ let ( main_def_id, sigpipe) = match tcx. entry_fn ( ( ) ) {
1919 Some ( ( def_id, entry_ty) ) => ( def_id, match entry_ty {
20- EntryFnType :: Main { sigpipe } => ( true , sigpipe) ,
21- EntryFnType :: Start => ( false , sigpipe:: DEFAULT ) ,
20+ EntryFnType :: Main { sigpipe } => sigpipe,
2221 } ) ,
2322 None => return ,
2423 } ;
@@ -32,14 +31,13 @@ pub(crate) fn maybe_create_entry_wrapper(
3231 return ;
3332 }
3433
35- create_entry_fn ( tcx, module, main_def_id, is_jit, is_main_fn , sigpipe) ;
34+ create_entry_fn ( tcx, module, main_def_id, is_jit, sigpipe) ;
3635
3736 fn create_entry_fn (
3837 tcx : TyCtxt < ' _ > ,
3938 m : & mut dyn Module ,
4039 rust_main_def_id : DefId ,
4140 ignore_lang_start_wrapper : bool ,
42- is_main_fn : bool ,
4341 sigpipe : u8 ,
4442 ) {
4543 let main_ret_ty = tcx. fn_sig ( rust_main_def_id) . no_bound_vars ( ) . unwrap ( ) . output ( ) ;
@@ -95,8 +93,8 @@ pub(crate) fn maybe_create_entry_wrapper(
9593
9694 let main_func_ref = m. declare_func_in_func ( main_func_id, & mut bcx. func ) ;
9795
98- let result = if is_main_fn && ignore_lang_start_wrapper {
99- // regular main fn, but ignoring #[lang = "start"] as we are running in the jit
96+ let result = if ignore_lang_start_wrapper {
97+ // ignoring #[lang = "start"] as we are running in the jit
10098 // FIXME set program arguments somehow
10199 let call_inst = bcx. ins ( ) . call ( main_func_ref, & [ ] ) ;
102100 let call_results = bcx. func . dfg . inst_results ( call_inst) . to_owned ( ) ;
@@ -134,7 +132,8 @@ pub(crate) fn maybe_create_entry_wrapper(
134132 types:: I64 => bcx. ins ( ) . sextend ( types:: I64 , res) ,
135133 _ => unimplemented ! ( "16bit systems are not yet supported" ) ,
136134 }
137- } else if is_main_fn {
135+ } else {
136+ // Regular main fn invoked via start lang item.
138137 let start_def_id = tcx. require_lang_item ( LangItem :: Start , None ) ;
139138 let start_instance = Instance :: expect_resolve (
140139 tcx,
@@ -151,10 +150,6 @@ pub(crate) fn maybe_create_entry_wrapper(
151150 let call_inst =
152151 bcx. ins ( ) . call ( func_ref, & [ main_val, arg_argc, arg_argv, arg_sigpipe] ) ;
153152 bcx. inst_results ( call_inst) [ 0 ]
154- } else {
155- // using user-defined start fn
156- let call_inst = bcx. ins ( ) . call ( main_func_ref, & [ arg_argc, arg_argv] ) ;
157- bcx. inst_results ( call_inst) [ 0 ]
158153 } ;
159154
160155 bcx. ins ( ) . return_ ( & [ result] ) ;
0 commit comments