208208mod autodiff;
209209
210210use std:: cell:: OnceCell ;
211- use std:: ops:: ControlFlow ;
212211
213212use rustc_data_structures:: fx:: FxIndexMap ;
214213use rustc_data_structures:: sync:: { MTLock , par_for_each_in} ;
@@ -229,7 +228,7 @@ use rustc_middle::ty::adjustment::{CustomCoerceUnsized, PointerCoercion};
229228use rustc_middle:: ty:: layout:: ValidityRequirement ;
230229use rustc_middle:: ty:: {
231230 self , GenericArgs , GenericParamDefKind , Instance , InstanceKind , Ty , TyCtxt , TypeFoldable ,
232- TypeVisitable , TypeVisitableExt , TypeVisitor , VtblEntry ,
231+ TypeVisitableExt , VtblEntry ,
233232} ;
234233use rustc_middle:: util:: Providers ;
235234use rustc_middle:: { bug, span_bug} ;
@@ -474,23 +473,6 @@ fn collect_items_rec<'tcx>(
474473 recursion_limit,
475474 ) ) ;
476475
477- // Plenty of code paths later assume that everything can be normalized.
478- // Check normalization here to provide better diagnostics.
479- // Normalization errors here are usually due to trait solving overflow.
480- // FIXME: I assume that there are few type errors at post-analysis stage, but not
481- // entirely sure.
482- if tcx. has_normalization_error_in_mono ( instance) {
483- let def_id = instance. def_id ( ) ;
484- let def_span = tcx. def_span ( def_id) ;
485- let def_path_str = tcx. def_path_str ( def_id) ;
486- tcx. dcx ( ) . emit_fatal ( RecursionLimit {
487- span : starting_item. span ,
488- instance,
489- def_span,
490- def_path_str,
491- } ) ;
492- }
493-
494476 rustc_data_structures:: stack:: ensure_sufficient_stack ( || {
495477 let ( used, mentioned) = tcx. items_of_instance ( ( instance, mode) ) ;
496478 used_items. extend ( used. into_iter ( ) . copied ( ) ) ;
@@ -621,33 +603,6 @@ fn collect_items_rec<'tcx>(
621603 }
622604}
623605
624- // Check whether we can normalize the MIR body. Make it a query since decoding MIR from disk cache
625- // may be expensive.
626- fn has_normalization_error_in_mono < ' tcx > ( tcx : TyCtxt < ' tcx > , instance : Instance < ' tcx > ) -> bool {
627- struct NormalizationChecker < ' tcx > {
628- tcx : TyCtxt < ' tcx > ,
629- instance : Instance < ' tcx > ,
630- }
631- impl < ' tcx > TypeVisitor < TyCtxt < ' tcx > > for NormalizationChecker < ' tcx > {
632- type Result = ControlFlow < ( ) > ;
633-
634- fn visit_ty ( & mut self , t : Ty < ' tcx > ) -> Self :: Result {
635- match self . instance . try_instantiate_mir_and_normalize_erasing_regions (
636- self . tcx ,
637- ty:: TypingEnv :: fully_monomorphized ( ) ,
638- ty:: EarlyBinder :: bind ( t) ,
639- ) {
640- Ok ( _) => ControlFlow :: Continue ( ( ) ) ,
641- Err ( _) => ControlFlow :: Break ( ( ) ) ,
642- }
643- }
644- }
645-
646- let body = tcx. instance_mir ( instance. def ) ;
647- let mut checker = NormalizationChecker { tcx, instance } ;
648- body. visit_with ( & mut checker) . is_break ( )
649- }
650-
651606fn check_recursion_limit < ' tcx > (
652607 tcx : TyCtxt < ' tcx > ,
653608 instance : Instance < ' tcx > ,
@@ -1815,5 +1770,4 @@ pub(crate) fn collect_crate_mono_items<'tcx>(
18151770pub ( crate ) fn provide ( providers : & mut Providers ) {
18161771 providers. hooks . should_codegen_locally = should_codegen_locally;
18171772 providers. items_of_instance = items_of_instance;
1818- providers. has_normalization_error_in_mono = has_normalization_error_in_mono;
18191773}
0 commit comments