@@ -24,31 +24,30 @@ struct CodegenedFunction<'tcx> {
2424}
2525
2626pub ( crate ) fn codegen_and_compile_fn < ' tcx > (
27+ tcx : TyCtxt < ' tcx > ,
2728 cx : & mut crate :: CodegenCx < ' tcx > ,
2829 cached_context : & mut Context ,
2930 module : & mut dyn Module ,
3031 instance : Instance < ' tcx > ,
3132) {
32- let tcx = cx. tcx ;
3333 let _inst_guard =
3434 crate :: PrintOnPanic ( || format ! ( "{:?} {}" , instance, tcx. symbol_name( instance) . name) ) ;
3535
3636 let cached_func = std:: mem:: replace ( & mut cached_context. func , Function :: new ( ) ) ;
37- let codegened_func = codegen_fn ( cx, cached_func, module, instance) ;
37+ let codegened_func = codegen_fn ( tcx , cx, cached_func, module, instance) ;
3838
39- compile_fn ( cx, cached_context, module, codegened_func) ;
39+ compile_fn ( tcx , cx, cached_context, module, codegened_func) ;
4040}
4141
4242fn codegen_fn < ' tcx > (
43+ tcx : TyCtxt < ' tcx > ,
4344 cx : & mut crate :: CodegenCx < ' tcx > ,
4445 cached_func : Function ,
4546 module : & mut dyn Module ,
4647 instance : Instance < ' tcx > ,
4748) -> CodegenedFunction < ' tcx > {
4849 debug_assert ! ( !instance. substs. needs_infer( ) ) ;
4950
50- let tcx = cx. tcx ;
51-
5251 let mir = tcx. instance_mir ( instance. def ) ;
5352 let _mir_guard = crate :: PrintOnPanic ( || {
5453 let mut buf = Vec :: new ( ) ;
@@ -117,14 +116,16 @@ fn codegen_fn<'tcx>(
117116
118117 fx. constants_cx . finalize ( fx. tcx , & mut * fx. module ) ;
119118
120- crate :: pretty_clif:: write_clif_file (
121- tcx,
122- symbol_name. name ,
123- "unopt" ,
124- module. isa ( ) ,
125- & func,
126- & clif_comments,
127- ) ;
119+ if cx. should_write_ir {
120+ crate :: pretty_clif:: write_clif_file (
121+ tcx. output_filenames ( ( ) ) ,
122+ symbol_name. name ,
123+ "unopt" ,
124+ module. isa ( ) ,
125+ & func,
126+ & clif_comments,
127+ ) ;
128+ }
128129
129130 // Verify function
130131 verify_func ( tcx, & clif_comments, & func) ;
@@ -141,13 +142,12 @@ fn codegen_fn<'tcx>(
141142}
142143
143144fn compile_fn < ' tcx > (
145+ tcx : TyCtxt < ' tcx > ,
144146 cx : & mut crate :: CodegenCx < ' tcx > ,
145147 cached_context : & mut Context ,
146148 module : & mut dyn Module ,
147149 codegened_func : CodegenedFunction < ' tcx > ,
148150) {
149- let tcx = cx. tcx ;
150-
151151 let clif_comments = codegened_func. clif_comments ;
152152
153153 // Store function in context
@@ -194,26 +194,28 @@ fn compile_fn<'tcx>(
194194
195195 // Define function
196196 tcx. sess . time ( "define function" , || {
197- context. want_disasm = crate :: pretty_clif :: should_write_ir ( tcx ) ;
197+ context. want_disasm = cx . should_write_ir ;
198198 module. define_function ( codegened_func. func_id , context) . unwrap ( ) ;
199199 } ) ;
200200
201- // Write optimized function to file for debugging
202- crate :: pretty_clif:: write_clif_file (
203- tcx,
204- codegened_func. symbol_name . name ,
205- "opt" ,
206- module. isa ( ) ,
207- & context. func ,
208- & clif_comments,
209- ) ;
210-
211- if let Some ( disasm) = & context. mach_compile_result . as_ref ( ) . unwrap ( ) . disasm {
212- crate :: pretty_clif:: write_ir_file (
213- tcx,
214- || format ! ( "{}.vcode" , codegened_func. symbol_name. name) ,
215- |file| file. write_all ( disasm. as_bytes ( ) ) ,
216- )
201+ if cx. should_write_ir {
202+ // Write optimized function to file for debugging
203+ crate :: pretty_clif:: write_clif_file (
204+ & cx. output_filenames ,
205+ codegened_func. symbol_name . name ,
206+ "opt" ,
207+ module. isa ( ) ,
208+ & context. func ,
209+ & clif_comments,
210+ ) ;
211+
212+ if let Some ( disasm) = & context. mach_compile_result . as_ref ( ) . unwrap ( ) . disasm {
213+ crate :: pretty_clif:: write_ir_file (
214+ & cx. output_filenames ,
215+ & format ! ( "{}.vcode" , codegened_func. symbol_name. name) ,
216+ |file| file. write_all ( disasm. as_bytes ( ) ) ,
217+ )
218+ }
217219 }
218220
219221 // Define debuginfo for function
0 commit comments