about summary refs log tree commit diff
path: root/compiler/rustc_target/src/spec/base/msvc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_target/src/spec/base/msvc.rs')
-rw-r--r--compiler/rustc_target/src/spec/base/msvc.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/compiler/rustc_target/src/spec/base/msvc.rs b/compiler/rustc_target/src/spec/base/msvc.rs
index 486d7158723..bd59678d236 100644
--- a/compiler/rustc_target/src/spec/base/msvc.rs
+++ b/compiler/rustc_target/src/spec/base/msvc.rs
@@ -5,7 +5,19 @@ use crate::spec::{BinaryFormat, DebuginfoKind, LinkerFlavor, Lld, SplitDebuginfo
 pub(crate) fn opts() -> TargetOptions {
     // Suppress the verbose logo and authorship debugging output, which would needlessly
     // clog any log files.
-    let pre_link_args = TargetOptions::link_args(LinkerFlavor::Msvc(Lld::No), &["/NOLOGO"]);
+    let pre_link_args = TargetOptions::link_args(
+        LinkerFlavor::Msvc(Lld::No),
+        &[
+            "/NOLOGO",
+            // "Symbol is marked as dllimport, but defined in an object file"
+            // Harmless warning that flags a potential performance improvement: marking a symbol as
+            // dllimport indirects usage via the `__imp_` symbol, which isn't required if the symbol
+            // is in the current binary. This is tripped by __rust_no_alloc_shim_is_unstable as it
+            // is generated by the compiler, but marked as a foreign item (hence the dllimport) in
+            // the standard library.
+            "/IGNORE:4286",
+        ],
+    );
 
     TargetOptions {
         linker_flavor: LinkerFlavor::Msvc(Lld::No),