File tree 1 file changed +7
-1
lines changed
compiler/rustc_codegen_ssa/src/back
1 file changed +7
-1
lines changed Original file line number Diff line number Diff line change @@ -2163,8 +2163,14 @@ fn msvc_imps_needed(tcx: TyCtxt<'_>) -> bool {
2163
2163
&& tcx. sess. opts. cg. prefer_dynamic)
2164
2164
) ;
2165
2165
2166
+ // We need to generate _imp__ symbol if we are generating an rlib or we include one
2167
+ // indirectly from ThinLTO. In theory these are not needed as ThinLTO could resolve
2168
+ // these, but it currently does not do so.
2169
+ let can_have_static_objects =
2170
+ tcx. sess . lto ( ) == Lto :: Thin || tcx. crate_types ( ) . iter ( ) . any ( |ct| * ct == CrateType :: Rlib ) ;
2171
+
2166
2172
tcx. sess . target . is_like_windows &&
2167
- tcx . crate_types ( ) . iter ( ) . any ( |ct| * ct == CrateType :: Rlib ) &&
2173
+ can_have_static_objects &&
2168
2174
// ThinLTO can't handle this workaround in all cases, so we don't
2169
2175
// emit the `__imp_` symbols. Instead we make them unnecessary by disallowing
2170
2176
// dynamic linking when linker plugin LTO is enabled.
You can’t perform that action at this time.
0 commit comments