about summary refs log tree commit diff
path: root/compiler/rustc_session/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-01-20 07:15:40 +0000
committerbors <bors@rust-lang.org>2021-01-20 07:15:40 +0000
commita4cbb44ae2c80545db957763b502dc7f6ea22085 (patch)
tree3281c73ef832c28b327c16fb23c8c6e2e0d70435 /compiler/rustc_session/src
parente05409a02c6e73a3dea6da98798468db2910ca59 (diff)
parentf9275e1092232fcb8ec117fc4acca990f57cba15 (diff)
downloadrust-a4cbb44ae2c80545db957763b502dc7f6ea22085.tar.gz
rust-a4cbb44ae2c80545db957763b502dc7f6ea22085.zip
Auto merge of #81118 - ojeda:metadata-obj, r=nagisa
Skip linking if it is not required

This allows to use `--emit=metadata,obj` and other metadata + non-link combinations.

Fixes #81117.
Diffstat (limited to 'compiler/rustc_session/src')
-rw-r--r--compiler/rustc_session/src/config.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs
index 0cafdec1495..49833601c9e 100644
--- a/compiler/rustc_session/src/config.rs
+++ b/compiler/rustc_session/src/config.rs
@@ -403,6 +403,20 @@ impl OutputTypes {
             OutputType::Metadata | OutputType::DepInfo => false,
         })
     }
+
+    // Returns `true` if any of the output types require linking.
+    pub fn should_link(&self) -> bool {
+        self.0.keys().any(|k| match *k {
+            OutputType::Bitcode
+            | OutputType::Assembly
+            | OutputType::LlvmAssembly
+            | OutputType::Mir
+            | OutputType::Metadata
+            | OutputType::Object
+            | OutputType::DepInfo => false,
+            OutputType::Exe => true,
+        })
+    }
 }
 
 /// Use tree-based collections to cheaply get a deterministic `Hash` implementation.