@@ -272,80 +272,97 @@ fn module_codegen(
272
272
ConcurrencyLimiterToken ,
273
273
) ,
274
274
) -> OngoingModuleCodegen {
275
- let ( cgu_name, mut cx, mut module, codegened_functions) = tcx. sess . time ( "codegen cgu" , || {
276
- let cgu = tcx. codegen_unit ( cgu_name) ;
277
- let mono_items = cgu. items_in_deterministic_order ( tcx) ;
278
-
279
- let mut module = make_module ( tcx. sess , & backend_config, cgu_name. as_str ( ) . to_string ( ) ) ;
280
-
281
- let mut cx = crate :: CodegenCx :: new (
282
- tcx,
283
- backend_config. clone ( ) ,
284
- module. isa ( ) ,
285
- tcx. sess . opts . debuginfo != DebugInfo :: None ,
286
- cgu_name,
287
- ) ;
288
- super :: predefine_mono_items ( tcx, & mut module, & mono_items) ;
289
- let mut codegened_functions = vec ! [ ] ;
290
- for ( mono_item, _) in mono_items {
291
- match mono_item {
292
- MonoItem :: Fn ( inst) => {
293
- tcx. sess . time ( "codegen fn" , || {
294
- let codegened_function = crate :: base:: codegen_fn (
275
+ let ( cgu_name, mut cx, mut module, codegened_functions) =
276
+ tcx. prof . verbose_generic_activity_with_arg ( "codegen cgu" , cgu_name. as_str ( ) ) . run ( || {
277
+ let cgu = tcx. codegen_unit ( cgu_name) ;
278
+ let mono_items = cgu. items_in_deterministic_order ( tcx) ;
279
+
280
+ let mut module = make_module ( tcx. sess , & backend_config, cgu_name. as_str ( ) . to_string ( ) ) ;
281
+
282
+ let mut cx = crate :: CodegenCx :: new (
283
+ tcx,
284
+ backend_config. clone ( ) ,
285
+ module. isa ( ) ,
286
+ tcx. sess . opts . debuginfo != DebugInfo :: None ,
287
+ cgu_name,
288
+ ) ;
289
+ super :: predefine_mono_items ( tcx, & mut module, & mono_items) ;
290
+ let mut codegened_functions = vec ! [ ] ;
291
+ for ( mono_item, _) in mono_items {
292
+ match mono_item {
293
+ MonoItem :: Fn ( inst) => {
294
+ tcx. prof . generic_activity ( "codegen fn" ) . run ( || {
295
+ let codegened_function = crate :: base:: codegen_fn (
296
+ tcx,
297
+ & mut cx,
298
+ Function :: new ( ) ,
299
+ & mut module,
300
+ inst,
301
+ ) ;
302
+ codegened_functions. push ( codegened_function) ;
303
+ } ) ;
304
+ }
305
+ MonoItem :: Static ( def_id) => {
306
+ crate :: constant:: codegen_static ( tcx, & mut module, def_id)
307
+ }
308
+ MonoItem :: GlobalAsm ( item_id) => {
309
+ crate :: global_asm:: codegen_global_asm_item (
295
310
tcx,
296
- & mut cx,
297
- Function :: new ( ) ,
298
- & mut module,
299
- inst,
311
+ & mut cx. global_asm ,
312
+ item_id,
300
313
) ;
301
- codegened_functions. push ( codegened_function) ;
302
- } ) ;
303
- }
304
- MonoItem :: Static ( def_id) => {
305
- crate :: constant:: codegen_static ( tcx, & mut module, def_id)
306
- }
307
- MonoItem :: GlobalAsm ( item_id) => {
308
- crate :: global_asm:: codegen_global_asm_item ( tcx, & mut cx. global_asm , item_id) ;
314
+ }
309
315
}
310
316
}
311
- }
312
- crate :: main_shim:: maybe_create_entry_wrapper (
313
- tcx,
314
- & mut module,
315
- & mut cx. unwind_context ,
316
- false ,
317
- cgu. is_primary ( ) ,
318
- ) ;
317
+ crate :: main_shim:: maybe_create_entry_wrapper (
318
+ tcx,
319
+ & mut module,
320
+ & mut cx. unwind_context ,
321
+ false ,
322
+ cgu. is_primary ( ) ,
323
+ ) ;
319
324
320
- let cgu_name = cgu. name ( ) . as_str ( ) . to_owned ( ) ;
325
+ let cgu_name = cgu. name ( ) . as_str ( ) . to_owned ( ) ;
321
326
322
- ( cgu_name, cx, module, codegened_functions)
323
- } ) ;
327
+ ( cgu_name, cx, module, codegened_functions)
328
+ } ) ;
324
329
325
330
OngoingModuleCodegen :: Async ( std:: thread:: spawn ( move || {
326
- cx. profiler . clone ( ) . verbose_generic_activity ( "compile functions" ) . run ( || {
327
- let mut cached_context = Context :: new ( ) ;
328
- for codegened_func in codegened_functions {
329
- crate :: base:: compile_fn ( & mut cx, & mut cached_context, & mut module, codegened_func) ;
330
- }
331
- } ) ;
331
+ cx. profiler . clone ( ) . verbose_generic_activity_with_arg ( "compile functions" , & * cgu_name) . run (
332
+ || {
333
+ let mut cached_context = Context :: new ( ) ;
334
+ for codegened_func in codegened_functions {
335
+ crate :: base:: compile_fn (
336
+ & mut cx,
337
+ & mut cached_context,
338
+ & mut module,
339
+ codegened_func,
340
+ ) ;
341
+ }
342
+ } ,
343
+ ) ;
332
344
333
- let global_asm_object_file =
334
- cx. profiler . verbose_generic_activity ( "compile assembly" ) . run ( || {
345
+ let global_asm_object_file = cx
346
+ . profiler
347
+ . verbose_generic_activity_with_arg ( "compile assembly" , & * cgu_name)
348
+ . run ( || {
335
349
crate :: global_asm:: compile_global_asm ( & global_asm_config, & cgu_name, & cx. global_asm )
336
350
} ) ?;
337
351
338
- let codegen_result = cx. profiler . verbose_generic_activity ( "write object file" ) . run ( || {
339
- emit_cgu (
340
- & global_asm_config. output_filenames ,
341
- & cx. profiler ,
342
- cgu_name,
343
- module,
344
- cx. debug_context ,
345
- cx. unwind_context ,
346
- global_asm_object_file,
347
- )
348
- } ) ;
352
+ let codegen_result = cx
353
+ . profiler
354
+ . verbose_generic_activity_with_arg ( "write object file" , & * cgu_name)
355
+ . run ( || {
356
+ emit_cgu (
357
+ & global_asm_config. output_filenames ,
358
+ & cx. profiler ,
359
+ cgu_name,
360
+ module,
361
+ cx. debug_context ,
362
+ cx. unwind_context ,
363
+ global_asm_object_file,
364
+ )
365
+ } ) ;
349
366
std:: mem:: drop ( token) ;
350
367
codegen_result
351
368
} ) )
@@ -375,7 +392,7 @@ pub(crate) fn run_aot(
375
392
376
393
let mut concurrency_limiter = ConcurrencyLimiter :: new ( tcx. sess , cgus. len ( ) ) ;
377
394
378
- let modules = super :: time ( tcx, backend_config . display_cg_time , "codegen mono items" , || {
395
+ let modules = tcx. sess . time ( "codegen mono items" , || {
379
396
cgus. iter ( )
380
397
. map ( |cgu| {
381
398
let cgu_reuse = if backend_config. disable_incr_cache {
@@ -437,7 +454,6 @@ pub(crate) fn run_aot(
437
454
} ;
438
455
439
456
let metadata_module = if need_metadata_module {
440
- let _timer = tcx. prof . generic_activity ( "codegen crate metadata" ) ;
441
457
let ( metadata_cgu_name, tmp_file) = tcx. sess . time ( "write compressed metadata" , || {
442
458
use rustc_middle:: mir:: mono:: CodegenUnitNameBuilder ;
443
459
0 commit comments