diff options
| author | Maybe Waffle <waffle.lapkin@gmail.com> | 2024-02-15 00:23:56 +0000 |
|---|---|---|
| committer | Maybe Waffle <waffle.lapkin@gmail.com> | 2024-02-15 00:23:56 +0000 |
| commit | f368922cfa58d2ebc98b6153e62bcb65e27fcf67 (patch) | |
| tree | 6c70de39a5271e8cbec6d78fe884dd33e3a2a020 /compiler/rustc_codegen_ssa/src/back | |
| parent | 9a77ec98b801e0fbd2b249d4f8edbb081c3d1e85 (diff) | |
| download | rust-f368922cfa58d2ebc98b6153e62bcb65e27fcf67.tar.gz rust-f368922cfa58d2ebc98b6153e62bcb65e27fcf67.zip | |
Allow codegen backends to opt-out of parallel codegen
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/back')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/write.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index 4a59e8faea7..5f6d3c9aafc 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -369,6 +369,10 @@ pub struct CodegenContext<B: WriteBackendMethods> { pub incr_comp_session_dir: Option<PathBuf>, /// Channel back to the main control thread to send messages to pub coordinator_send: Sender<Box<dyn Any + Send>>, + /// `true` if the codegen should be run in parallel. + /// + /// Depends on [`CodegenBackend::supports_parallel()`] and `-Zno_parallel_backend`. + pub parallel: bool, } impl<B: WriteBackendMethods> CodegenContext<B> { @@ -1129,6 +1133,7 @@ fn start_executing_work<B: ExtraBackendMethods>( target_arch: tcx.sess.target.arch.to_string(), split_debuginfo: tcx.sess.split_debuginfo(), split_dwarf_kind: tcx.sess.opts.unstable_opts.split_dwarf_kind, + parallel: backend.supports_parallel() && !sess.opts.unstable_opts.no_parallel_backend, }; // This is the "main loop" of parallel work happening for parallel codegen. @@ -1399,7 +1404,7 @@ fn start_executing_work<B: ExtraBackendMethods>( .binary_search_by_key(&cost, |&(_, cost)| cost) .unwrap_or_else(|e| e); work_items.insert(insertion_index, (work, cost)); - if !cgcx.opts.unstable_opts.no_parallel_backend { + if cgcx.parallel { helper.request_token(); } } @@ -1522,7 +1527,7 @@ fn start_executing_work<B: ExtraBackendMethods>( }; work_items.insert(insertion_index, (llvm_work_item, cost)); - if !cgcx.opts.unstable_opts.no_parallel_backend { + if cgcx.parallel { helper.request_token(); } assert_eq!(main_thread_state, MainThreadState::Codegenning); |
