@@ -25,9 +25,8 @@ use rustc_middle::mir::mono::{
2525 CodegenUnit , Linkage as RLinkage , MonoItem , MonoItemData , Visibility ,
2626} ;
2727use rustc_session:: Session ;
28- use rustc_session:: config:: { DebugInfo , OutFileName , OutputFilenames , OutputType } ;
28+ use rustc_session:: config:: { OutFileName , OutputFilenames , OutputType } ;
2929
30- use crate :: CodegenCx ;
3130use crate :: base:: CodegenedFunction ;
3231use crate :: concurrency_limiter:: { ConcurrencyLimiter , ConcurrencyLimiterToken } ;
3332use crate :: debuginfo:: TypeDebugContext ;
@@ -512,18 +511,13 @@ fn codegen_cgu_content(
512511 tcx : TyCtxt < ' _ > ,
513512 module : & mut dyn Module ,
514513 cgu_name : rustc_span:: Symbol ,
515- ) -> ( CodegenCx , Vec < CodegenedFunction > , String ) {
514+ ) -> ( Option < DebugContext > , Vec < CodegenedFunction > , String ) {
516515 let _timer = tcx. prof . generic_activity_with_arg ( "codegen cgu" , cgu_name. as_str ( ) ) ;
517516
518517 let cgu = tcx. codegen_unit ( cgu_name) ;
519518 let mono_items = cgu. items_in_deterministic_order ( tcx) ;
520519
521- let mut cx = crate :: CodegenCx :: new (
522- tcx,
523- module. isa ( ) ,
524- tcx. sess . opts . debuginfo != DebugInfo :: None ,
525- cgu_name,
526- ) ;
520+ let mut debug_context = DebugContext :: new ( tcx, module. isa ( ) , false , cgu_name. as_str ( ) ) ;
527521 let mut global_asm = String :: new ( ) ;
528522 let mut type_dbg = TypeDebugContext :: default ( ) ;
529523 super :: predefine_mono_items ( tcx, module, & mono_items) ;
@@ -550,7 +544,8 @@ fn codegen_cgu_content(
550544 }
551545 let codegened_function = crate :: base:: codegen_fn (
552546 tcx,
553- & mut cx,
547+ cgu_name,
548+ debug_context. as_mut ( ) ,
554549 & mut type_dbg,
555550 Function :: new ( ) ,
556551 module,
@@ -560,7 +555,7 @@ fn codegen_cgu_content(
560555 }
561556 MonoItem :: Static ( def_id) => {
562557 let data_id = crate :: constant:: codegen_static ( tcx, module, def_id) ;
563- if let Some ( debug_context) = & mut cx . debug_context {
558+ if let Some ( debug_context) = debug_context. as_mut ( ) {
564559 debug_context. define_static ( tcx, & mut type_dbg, def_id, data_id) ;
565560 }
566561 }
@@ -574,7 +569,7 @@ fn codegen_cgu_content(
574569 }
575570 crate :: main_shim:: maybe_create_entry_wrapper ( tcx, module, false , cgu. is_primary ( ) ) ;
576571
577- ( cx , codegened_functions, global_asm)
572+ ( debug_context , codegened_functions, global_asm)
578573}
579574
580575fn module_codegen (
@@ -587,7 +582,7 @@ fn module_codegen(
587582) -> OngoingModuleCodegen {
588583 let mut module = make_module ( tcx. sess , cgu_name. as_str ( ) . to_string ( ) ) ;
589584
590- let ( mut cx , codegened_functions, mut global_asm) =
585+ let ( mut debug_context , codegened_functions, mut global_asm) =
591586 codegen_cgu_content ( tcx, & mut module, cgu_name) ;
592587
593588 let cgu_name = cgu_name. as_str ( ) . to_owned ( ) ;
@@ -597,6 +592,7 @@ fn module_codegen(
597592 let profiler = tcx. prof . clone ( ) ;
598593 let invocation_temp = tcx. sess . invocation_temp . clone ( ) ;
599594 let output_filenames = tcx. output_filenames ( ( ) ) . clone ( ) ;
595+ let should_write_ir = crate :: pretty_clif:: should_write_ir ( tcx. sess ) ;
600596
601597 OngoingModuleCodegen :: Async ( std:: thread:: spawn ( move || {
602598 profiler. clone ( ) . generic_activity_with_arg ( "compile functions" , & * cgu_name) . run ( || {
@@ -607,11 +603,12 @@ fn module_codegen(
607603 let mut cached_context = Context :: new ( ) ;
608604 for codegened_func in codegened_functions {
609605 crate :: base:: compile_fn (
610- & mut cx,
611606 & profiler,
612607 & output_filenames,
608+ should_write_ir,
613609 & mut cached_context,
614610 & mut module,
611+ debug_context. as_mut ( ) ,
615612 & mut global_asm,
616613 codegened_func,
617614 ) ;
@@ -636,7 +633,7 @@ fn module_codegen(
636633 & profiler,
637634 cgu_name,
638635 module,
639- cx . debug_context ,
636+ debug_context,
640637 global_asm_object_file,
641638 & producer,
642639 )
0 commit comments