@@ -258,53 +258,68 @@ fn module_codegen(
258258 ConcurrencyLimiterToken ,
259259 ) ,
260260) -> OngoingModuleCodegen {
261- let cgu = tcx. codegen_unit ( cgu_name) ;
262- let mono_items = cgu. items_in_deterministic_order ( tcx) ;
263-
264- let mut module = make_module ( tcx. sess , & backend_config, cgu_name. as_str ( ) . to_string ( ) ) ;
265-
266- let mut cx = crate :: CodegenCx :: new (
267- tcx,
268- backend_config. clone ( ) ,
269- module. isa ( ) ,
270- tcx. sess . opts . debuginfo != DebugInfo :: None ,
271- cgu_name,
272- ) ;
273- super :: predefine_mono_items ( tcx, & mut module, & mono_items) ;
274- let mut codegened_functions = vec ! [ ] ;
275- for ( mono_item, _) in mono_items {
276- match mono_item {
277- MonoItem :: Fn ( inst) => {
278- tcx. sess . time ( "codegen fn" , || {
279- let codegened_function =
280- crate :: base:: codegen_fn ( tcx, & mut cx, Function :: new ( ) , & mut module, inst) ;
281- codegened_functions. push ( codegened_function) ;
282- } ) ;
283- }
284- MonoItem :: Static ( def_id) => crate :: constant:: codegen_static ( tcx, & mut module, def_id) ,
285- MonoItem :: GlobalAsm ( item_id) => {
286- crate :: global_asm:: codegen_global_asm_item ( tcx, & mut cx. global_asm , item_id) ;
261+ let ( cgu_name, mut cx, mut module, codegened_functions) = tcx. sess . time ( "codegen cgu" , || {
262+ let cgu = tcx. codegen_unit ( cgu_name) ;
263+ let mono_items = cgu. items_in_deterministic_order ( tcx) ;
264+
265+ let mut module = make_module ( tcx. sess , & backend_config, cgu_name. as_str ( ) . to_string ( ) ) ;
266+
267+ let mut cx = crate :: CodegenCx :: new (
268+ tcx,
269+ backend_config. clone ( ) ,
270+ module. isa ( ) ,
271+ tcx. sess . opts . debuginfo != DebugInfo :: None ,
272+ cgu_name,
273+ ) ;
274+ super :: predefine_mono_items ( tcx, & mut module, & mono_items) ;
275+ let mut codegened_functions = vec ! [ ] ;
276+ for ( mono_item, _) in mono_items {
277+ match mono_item {
278+ MonoItem :: Fn ( inst) => {
279+ tcx. sess . time ( "codegen fn" , || {
280+ let codegened_function = crate :: base:: codegen_fn (
281+ tcx,
282+ & mut cx,
283+ Function :: new ( ) ,
284+ & mut module,
285+ inst,
286+ ) ;
287+ codegened_functions. push ( codegened_function) ;
288+ } ) ;
289+ }
290+ MonoItem :: Static ( def_id) => {
291+ crate :: constant:: codegen_static ( tcx, & mut module, def_id)
292+ }
293+ MonoItem :: GlobalAsm ( item_id) => {
294+ crate :: global_asm:: codegen_global_asm_item ( tcx, & mut cx. global_asm , item_id) ;
295+ }
287296 }
288297 }
289- }
290- crate :: main_shim:: maybe_create_entry_wrapper (
291- tcx,
292- & mut module,
293- & mut cx. unwind_context ,
294- false ,
295- cgu. is_primary ( ) ,
296- ) ;
298+ crate :: main_shim:: maybe_create_entry_wrapper (
299+ tcx,
300+ & mut module,
301+ & mut cx. unwind_context ,
302+ false ,
303+ cgu. is_primary ( ) ,
304+ ) ;
297305
298- let cgu_name = cgu. name ( ) . as_str ( ) . to_owned ( ) ;
306+ let cgu_name = cgu. name ( ) . as_str ( ) . to_owned ( ) ;
307+
308+ ( cgu_name, cx, module, codegened_functions)
309+ } ) ;
299310
300311 OngoingModuleCodegen :: Async ( std:: thread:: spawn ( move || {
301- let mut cached_context = Context :: new ( ) ;
302- for codegened_func in codegened_functions {
303- crate :: base:: compile_fn ( & mut cx, & mut cached_context, & mut module, codegened_func) ;
304- }
312+ cx. profiler . clone ( ) . verbose_generic_activity ( "compile functions" ) . run ( || {
313+ let mut cached_context = Context :: new ( ) ;
314+ for codegened_func in codegened_functions {
315+ crate :: base:: compile_fn ( & mut cx, & mut cached_context, & mut module, codegened_func) ;
316+ }
317+ } ) ;
305318
306319 let global_asm_object_file =
307- crate :: global_asm:: compile_global_asm ( & global_asm_config, & cgu_name, & cx. global_asm ) ?;
320+ cx. profiler . verbose_generic_activity ( "compile assembly" ) . run ( || {
321+ crate :: global_asm:: compile_global_asm ( & global_asm_config, & cgu_name, & cx. global_asm )
322+ } ) ?;
308323
309324 let codegen_result = cx. profiler . verbose_generic_activity ( "write object file" ) . run ( || {
310325 emit_cgu (
0 commit comments