@@ -29,7 +29,7 @@ use rustc::dep_graph::WorkProduct;
2929use rustc_codegen_ssa:: back:: lto:: { LtoModuleCodegen , SerializedModule , ThinModule } ;
3030use rustc_codegen_ssa:: back:: write:: { CodegenContext , FatLTOInput , ModuleConfig } ;
3131use rustc_codegen_ssa:: traits:: * ;
32- use rustc_codegen_ssa:: CompiledModule ;
32+ use rustc_codegen_ssa:: { CodegenResults , CompiledModule } ;
3333use rustc_errors:: { FatalError , Handler } ;
3434use std:: any:: Any ;
3535use std:: ffi:: CStr ;
@@ -39,7 +39,7 @@ use syntax::expand::allocator::AllocatorKind;
3939
4040use rustc:: dep_graph:: DepGraph ;
4141use rustc:: middle:: cstore:: { EncodedMetadata , MetadataLoaderDyn } ;
42- use rustc:: session:: config:: { OptLevel , OutputFilenames , OutputType , PrintRequest } ;
42+ use rustc:: session:: config:: { OptLevel , OutputFilenames , PrintRequest } ;
4343use rustc:: session:: Session ;
4444use rustc:: ty:: { self , TyCtxt } ;
4545use rustc:: util:: common:: ErrorReported ;
@@ -270,13 +270,12 @@ impl CodegenBackend for LlvmCodegenBackend {
270270 )
271271 }
272272
273- fn join_codegen_and_link (
273+ fn join_codegen (
274274 & self ,
275275 ongoing_codegen : Box < dyn Any > ,
276276 sess : & Session ,
277277 dep_graph : & DepGraph ,
278- outputs : & OutputFilenames ,
279- ) -> Result < ( ) , ErrorReported > {
278+ ) -> Result < Box < dyn Any > , ErrorReported > {
280279 let ( codegen_results, work_products) = ongoing_codegen
281280 . downcast :: < rustc_codegen_ssa:: back:: write:: OngoingCodegen < LlvmCodegenBackend > > ( )
282281 . expect ( "Expected LlvmCodegenBackend's OngoingCodegen, found Box<Any>" )
@@ -291,14 +290,18 @@ impl CodegenBackend for LlvmCodegenBackend {
291290
292291 sess. compile_status ( ) ?;
293292
294- if !sess
295- . opts
296- . output_types
297- . keys ( )
298- . any ( |& i| i == OutputType :: Exe || i == OutputType :: Metadata )
299- {
300- return Ok ( ( ) ) ;
301- }
293+ Ok ( Box :: new ( codegen_results) )
294+ }
295+
296+ fn link (
297+ & self ,
298+ sess : & Session ,
299+ codegen_results : Box < dyn Any > ,
300+ outputs : & OutputFilenames ,
301+ ) -> Result < ( ) , ErrorReported > {
302+ let codegen_results = codegen_results
303+ . downcast :: < CodegenResults > ( )
304+ . expect ( "Expected CodegenResults, found Box<Any>" ) ;
302305
303306 if sess. opts . debugging_opts . no_link {
304307 // FIXME: use a binary format to encode the `.rlink` file
0 commit comments