diff options
| author | bors <bors@rust-lang.org> | 2020-02-04 05:48:54 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-02-04 05:48:54 +0000 |
| commit | fc07615c49259b16e1d1789e23050e71b744c652 (patch) | |
| tree | b0ce92ca0e2ec863a00a23c6624094a8cdd27de9 /src/librustc_codegen_llvm/lib.rs | |
| parent | 42a0bd2091b9ca8fe5059fd5f4a26279a388f278 (diff) | |
| parent | ae51d2ba32a3dfa3811ee19164ef789eb734a38b (diff) | |
| download | rust-fc07615c49259b16e1d1789e23050e71b744c652.tar.gz rust-fc07615c49259b16e1d1789e23050e71b744c652.zip | |
Auto merge of #68601 - 0dvictor:split, r=tmandry
Split `join_codegen_and_link()` into two steps `join_codegen_and_link()` is split to `join_codegen()` and `link()`.
Diffstat (limited to 'src/librustc_codegen_llvm/lib.rs')
| -rw-r--r-- | src/librustc_codegen_llvm/lib.rs | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/librustc_codegen_llvm/lib.rs b/src/librustc_codegen_llvm/lib.rs index 60771d385ae..8091a748540 100644 --- a/src/librustc_codegen_llvm/lib.rs +++ b/src/librustc_codegen_llvm/lib.rs @@ -29,7 +29,7 @@ use rustc::dep_graph::WorkProduct; use rustc_codegen_ssa::back::lto::{LtoModuleCodegen, SerializedModule, ThinModule}; use rustc_codegen_ssa::back::write::{CodegenContext, FatLTOInput, ModuleConfig}; use rustc_codegen_ssa::traits::*; -use rustc_codegen_ssa::CompiledModule; +use rustc_codegen_ssa::{CodegenResults, CompiledModule}; use rustc_errors::{FatalError, Handler}; use std::any::Any; use std::ffi::CStr; @@ -39,7 +39,7 @@ use syntax::expand::allocator::AllocatorKind; use rustc::dep_graph::DepGraph; use rustc::middle::cstore::{EncodedMetadata, MetadataLoaderDyn}; -use rustc::session::config::{OptLevel, OutputFilenames, OutputType, PrintRequest}; +use rustc::session::config::{OptLevel, OutputFilenames, PrintRequest}; use rustc::session::Session; use rustc::ty::{self, TyCtxt}; use rustc::util::common::ErrorReported; @@ -270,13 +270,12 @@ impl CodegenBackend for LlvmCodegenBackend { ) } - fn join_codegen_and_link( + fn join_codegen( &self, ongoing_codegen: Box<dyn Any>, sess: &Session, dep_graph: &DepGraph, - outputs: &OutputFilenames, - ) -> Result<(), ErrorReported> { + ) -> Result<Box<dyn Any>, ErrorReported> { let (codegen_results, work_products) = ongoing_codegen .downcast::<rustc_codegen_ssa::back::write::OngoingCodegen<LlvmCodegenBackend>>() .expect("Expected LlvmCodegenBackend's OngoingCodegen, found Box<Any>") @@ -291,14 +290,18 @@ impl CodegenBackend for LlvmCodegenBackend { sess.compile_status()?; - if !sess - .opts - .output_types - .keys() - .any(|&i| i == OutputType::Exe || i == OutputType::Metadata) - { - return Ok(()); - } + Ok(Box::new(codegen_results)) + } + + fn link( + &self, + sess: &Session, + codegen_results: Box<dyn Any>, + outputs: &OutputFilenames, + ) -> Result<(), ErrorReported> { + let codegen_results = codegen_results + .downcast::<CodegenResults>() + .expect("Expected CodegenResults, found Box<Any>"); if sess.opts.debugging_opts.no_link { // FIXME: use a binary format to encode the `.rlink` file |
