File tree Expand file tree Collapse file tree 1 file changed +7
-1
lines changed Expand file tree Collapse file tree 1 file changed +7
-1
lines changed Original file line number Diff line number Diff line change @@ -333,8 +333,14 @@ fn make_module(sess: &Session, name: String) -> UnwindModule<ObjectModule> {
333333
334334 let mut builder =
335335 ObjectBuilder :: new ( isa, name + ".o" , cranelift_module:: default_libcall_names ( ) ) . unwrap ( ) ;
336+ // Disable function sections by default on MSVC as it causes significant slowdowns with link.exe.
337+ // Maybe link.exe has exponential behavior when there are many sections with the same name? Also
338+ // explicitly disable it on MinGW as rustc already disables it by default on MinGW and as such
339+ // isn't tested. If rustc enables it in the future on MinGW, we can re-enable it too once it has
340+ // been on MinGW.
341+ let default_function_sections = sess. target . function_sections && !sess. target . is_like_windows ;
336342 builder. per_function_section (
337- sess. opts . unstable_opts . function_sections . unwrap_or ( sess . target . function_sections ) ,
343+ sess. opts . unstable_opts . function_sections . unwrap_or ( default_function_sections ) ,
338344 ) ;
339345 UnwindModule :: new ( ObjectModule :: new ( builder) , true )
340346}
You can’t perform that action at this time.
0 commit comments