about summary refs log tree commit diff
path: root/compiler/rustc_metadata/src/rmeta
diff options
context:
space:
mode:
authorRich Kadel <richkadel@google.com>2020-12-14 00:25:29 -0800
committerRich Kadel <richkadel@google.com>2020-12-14 12:55:46 -0800
commit4f550f1f930b9201bbeeb9fa10d42392a66cc9f2 (patch)
treeda2913fa47cb8ec9ee48b10c190284fba50b7e89 /compiler/rustc_metadata/src/rmeta
parenteb963ffe451bfbc001ea86712a94619903bfbaf8 (diff)
downloadrust-4f550f1f930b9201bbeeb9fa10d42392a66cc9f2.tar.gz
rust-4f550f1f930b9201bbeeb9fa10d42392a66cc9f2.zip
Improve warnings on incompatible options involving -Zinstrument-coverage
Adds checks for:

* `no_core` attribute
* explicitly-enabled `legacy` symbol mangling
* mir_opt_level > 1 (which enables inlining)

I removed code from the `Inline` MIR pass that forcibly disabled
inlining if `-Zinstrument-coverage` was set. The default `mir_opt_level`
does not enable inlining anyway. But if the level is explicitly set and
is greater than 1, I issue a warning.

The new warnings show up in tests, which is much better for diagnosing
potential option conflicts in these cases.
Diffstat (limited to 'compiler/rustc_metadata/src/rmeta')
-rw-r--r--compiler/rustc_metadata/src/rmeta/encoder.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs
index 46dd0df65e0..b0c75c1de9d 100644
--- a/compiler/rustc_metadata/src/rmeta/encoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/encoder.rs
@@ -663,7 +663,12 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
             no_builtins: tcx.sess.contains_name(&attrs, sym::no_builtins),
             panic_runtime: tcx.sess.contains_name(&attrs, sym::panic_runtime),
             profiler_runtime: tcx.sess.contains_name(&attrs, sym::profiler_runtime),
-            symbol_mangling_version: tcx.sess.opts.debugging_opts.symbol_mangling_version,
+            symbol_mangling_version: tcx
+                .sess
+                .opts
+                .debugging_opts
+                .symbol_mangling_version
+                .unwrap_or(SymbolManglingVersion::default()),
 
             crate_deps,
             dylib_dependency_formats,