diff options
| author | bors <bors@rust-lang.org> | 2022-02-10 09:37:07 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-02-10 09:37:07 +0000 |
| commit | 56cd04af5c389b6ab676ba16f59d9f70bc465090 (patch) | |
| tree | af86c44fca9e62cce5d7e5b6701b2227489fe06d /compiler/rustc_codegen_ssa/src | |
| parent | 5d6ee0db96aada145725838379f909bbb8aa2312 (diff) | |
| parent | 8edd32c9404f416945d82c438a62acb7f90c2f62 (diff) | |
| download | rust-56cd04af5c389b6ab676ba16f59d9f70bc465090.tar.gz rust-56cd04af5c389b6ab676ba16f59d9f70bc465090.zip | |
Auto merge of #93511 - cjgillot:query-copy, r=oli-obk
Ensure that queries only return Copy types. This should pervent the perf footgun of returning a result with an expensive `Clone` impl (like a `Vec` of a hash map). I went for the stupid solution of allocating on an arena everything that was not `Copy`. Some query results could be made Copy easily, but I did not really investigate.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/write.rs | 4 | ||||
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/base.rs | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index 540979ce02d..f6fddbb509d 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -477,7 +477,7 @@ pub fn start_async_codegen<B: ExtraBackendMethods>( codegen_worker_receive, shared_emitter_main, future: coordinator_thread, - output_filenames: tcx.output_filenames(()), + output_filenames: tcx.output_filenames(()).clone(), } } @@ -1050,7 +1050,7 @@ fn start_executing_work<B: ExtraBackendMethods>( cgu_reuse_tracker: sess.cgu_reuse_tracker.clone(), coordinator_send, diag_emitter: shared_emitter.clone(), - output_filenames: tcx.output_filenames(()), + output_filenames: tcx.output_filenames(()).clone(), regular_module_config: regular_config, metadata_module_config: metadata_config, allocator_module_config: allocator_config, diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index 49b785afa69..4a5eabc8755 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -843,7 +843,7 @@ impl CrateInfo { used_crate_source: Default::default(), lang_item_to_crate: Default::default(), missing_lang_items: Default::default(), - dependency_formats: tcx.dependency_formats(()), + dependency_formats: tcx.dependency_formats(()).clone(), windows_subsystem, }; let lang_items = tcx.lang_items(); @@ -860,7 +860,7 @@ impl CrateInfo { info.native_libraries .insert(cnum, tcx.native_libraries(cnum).iter().map(Into::into).collect()); info.crate_name.insert(cnum, tcx.crate_name(cnum).to_string()); - info.used_crate_source.insert(cnum, tcx.used_crate_source(cnum)); + info.used_crate_source.insert(cnum, tcx.used_crate_source(cnum).clone()); if tcx.is_compiler_builtins(cnum) { info.compiler_builtins = Some(cnum); } |
