Skip to content

Commit c87e20b

Browse files
committed
Also wait on other threads if a WorkerFatalError occurs
This means that codegen_aborted may be set when new codegen requests arrive, so drop some related assertions. The new work will simply be ignored.
1 parent b00d0fa commit c87e20b

File tree

1 file changed

+5
-5
lines changed
  • compiler/rustc_codegen_ssa/src/back

1 file changed

+5
-5
lines changed

compiler/rustc_codegen_ssa/src/back/write.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,14 +1475,12 @@ fn start_executing_work<B: ExtraBackendMethods>(
14751475
if !cgcx.opts.unstable_opts.no_parallel_llvm {
14761476
helper.request_token();
14771477
}
1478-
assert!(!codegen_aborted);
14791478
assert_eq!(main_thread_worker_state, MainThreadWorkerState::Codegenning);
14801479
main_thread_worker_state = MainThreadWorkerState::Idle;
14811480
}
14821481

14831482
Message::CodegenComplete => {
14841483
codegen_done = true;
1485-
assert!(!codegen_aborted);
14861484
assert_eq!(main_thread_worker_state, MainThreadWorkerState::Codegenning);
14871485
main_thread_worker_state = MainThreadWorkerState::Idle;
14881486
}
@@ -1494,7 +1492,6 @@ fn start_executing_work<B: ExtraBackendMethods>(
14941492
// then conditions above will ensure no more work is spawned but
14951493
// we'll keep executing this loop until `running` hits 0.
14961494
Message::CodegenAborted => {
1497-
assert!(!codegen_aborted);
14981495
codegen_done = true;
14991496
codegen_aborted = true;
15001497
}
@@ -1536,8 +1533,11 @@ fn start_executing_work<B: ExtraBackendMethods>(
15361533
Message::Done { result: Err(None), worker_id: _ } => {
15371534
bug!("worker thread panicked");
15381535
}
1539-
Message::Done { result: Err(Some(WorkerFatalError)), worker_id: _ } => {
1540-
return Err(());
1536+
Message::Done { result: Err(Some(WorkerFatalError)), worker_id } => {
1537+
// Similar to CodegenAborted, wait for remaining work to finish.
1538+
free_worker(worker_id);
1539+
codegen_done = true;
1540+
codegen_aborted = true;
15411541
}
15421542
Message::CodegenItem => bug!("the coordinator should not receive codegen requests"),
15431543
}

0 commit comments

Comments
 (0)