@@ -163,19 +163,22 @@ pub fn register_plugins<'a>(
163
163
)
164
164
} ) ;
165
165
166
- let ( krate, features) = rustc_expand:: config:: features (
167
- krate,
168
- & sess. parse_sess ,
169
- sess. edition ( ) ,
170
- & sess. opts . debugging_opts . allow_features ,
171
- ) ;
166
+ let ( krate, features) = sess. time ( "compute_features" , || {
167
+ rustc_expand:: config:: features (
168
+ krate,
169
+ & sess. parse_sess ,
170
+ sess. edition ( ) ,
171
+ & sess. opts . debugging_opts . allow_features ,
172
+ )
173
+ } ) ;
172
174
// these need to be set "early" so that expansion sees `quote` if enabled.
173
175
sess. init_features ( features) ;
174
176
175
177
let crate_types = util:: collect_crate_types ( sess, & krate. attrs ) ;
176
178
sess. crate_types . set ( crate_types) ;
177
179
178
- let disambiguator = util:: compute_crate_disambiguator ( sess) ;
180
+ let disambiguator =
181
+ sess. time ( "compute_crate_disambiguator" , || util:: compute_crate_disambiguator ( sess) ) ;
179
182
sess. crate_disambiguator . set ( disambiguator) ;
180
183
rustc_incremental:: prepare_session_directory ( sess, & crate_name, disambiguator) ;
181
184
@@ -611,6 +614,8 @@ pub fn prepare_outputs(
611
614
boxed_resolver : & Steal < Rc < RefCell < BoxedResolver > > > ,
612
615
crate_name : & str ,
613
616
) -> Result < OutputFilenames > {
617
+ let _timer = sess. timer ( "prepare_outputs" ) ;
618
+
614
619
// FIXME: rustdoc passes &[] instead of &krate.attrs here
615
620
let outputs = util:: build_output_filenames (
616
621
& compiler. input ,
@@ -721,33 +726,40 @@ pub fn create_global_ctxt<'tcx>(
721
726
722
727
let query_result_on_disk_cache = rustc_incremental:: load_query_result_cache ( sess) ;
723
728
724
- let codegen_backend = compiler. codegen_backend ( ) ;
725
- let mut local_providers = ty:: query:: Providers :: default ( ) ;
726
- default_provide ( & mut local_providers) ;
727
- codegen_backend. provide ( & mut local_providers) ;
729
+ let codegen_backend = sess. time ( "load_codegen_backend" , || compiler. codegen_backend ( ) ) ;
728
730
729
- let mut extern_providers = local_providers;
730
- default_provide_extern ( & mut extern_providers) ;
731
- codegen_backend. provide_extern ( & mut extern_providers) ;
731
+ let ( local_providers, extern_providers) = sess. time ( "load_codegen_backend" , || {
732
+ let mut local_providers = ty:: query:: Providers :: default ( ) ;
733
+ default_provide ( & mut local_providers) ;
734
+ codegen_backend. provide ( & mut local_providers) ;
732
735
733
- if let Some ( callback ) = compiler . override_queries {
734
- callback ( sess , & mut local_providers , & mut extern_providers) ;
735
- }
736
+ let mut extern_providers = local_providers ;
737
+ default_provide_extern ( & mut extern_providers) ;
738
+ codegen_backend . provide_extern ( & mut extern_providers ) ;
736
739
737
- let gcx = global_ctxt. init_locking ( || {
738
- TyCtxt :: create_global_ctxt (
739
- sess,
740
- lint_store,
741
- local_providers,
742
- extern_providers,
743
- & all_arenas,
744
- arena,
745
- resolver_outputs,
746
- hir_map,
747
- query_result_on_disk_cache,
748
- & crate_name,
749
- & outputs,
750
- )
740
+ if let Some ( callback) = compiler. override_queries {
741
+ callback ( sess, & mut local_providers, & mut extern_providers) ;
742
+ }
743
+
744
+ ( local_providers, extern_providers)
745
+ } ) ;
746
+
747
+ let gcx = sess. time ( "setup_global_ctxt" , || {
748
+ global_ctxt. init_locking ( || {
749
+ TyCtxt :: create_global_ctxt (
750
+ sess,
751
+ lint_store,
752
+ local_providers,
753
+ extern_providers,
754
+ & all_arenas,
755
+ arena,
756
+ resolver_outputs,
757
+ hir_map,
758
+ query_result_on_disk_cache,
759
+ & crate_name,
760
+ & outputs,
761
+ )
762
+ } )
751
763
} ) ;
752
764
753
765
// Do some initialization of the DepGraph that can only be done with the tcx available.
0 commit comments