From 955f283e11dec628a988e23100f21ab92329b3bd Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 25 Apr 2019 09:06:38 -0700 Subject: [PATCH] rustc: Flag metadata compatible with multiple CGUs It looks like the `OutputType::Metadata` kind in the compiler was misclassified in #38571 long ago by accident as incompatible with codegen units and a single output file. This means that if you emit both a linkable artifact and metadata it silently turns off multiple codegen units unintentionally! This commit corrects the situation to ensure that if `--emit metadata` is used it doesn't implicitly disable multiple codegen units. This will ensure we don't accidentally regress compiler performance when striving to implement pipelined compilation! --- src/librustc/session/config.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index cb307800fcdc2..92a3469526227 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -153,13 +153,12 @@ impl_stable_hash_via_hash!(OutputType); impl OutputType { fn is_compatible_with_codegen_units_and_single_output_file(&self) -> bool { match *self { - OutputType::Exe | OutputType::DepInfo => true, + OutputType::Exe | OutputType::DepInfo | OutputType::Metadata => true, OutputType::Bitcode | OutputType::Assembly | OutputType::LlvmAssembly | OutputType::Mir - | OutputType::Object - | OutputType::Metadata => false, + | OutputType::Object => false, } }