Zalathar
985b41d387
Remove the rustc_data_structures::assert_matches! re-exports
2026-03-08 22:02:23 +11:00
bjorn3
6ea5244ebf
Move some methods to WriteBackendMethods
2026-03-03 15:26:30 +00:00
bjorn3
eff0d4c6f4
Fuse codegen into LTO optimize methods
2026-03-03 15:25:43 +00:00
bjorn3
22d4bb2592
Move print_pass_timings and print_statistics calls to rustc_interface
2026-03-03 15:25:42 +00:00
bjorn3
9e917ee7a6
Replace spawn_named_thread method with thread_profiler
2026-03-03 15:25:00 +00:00
bjorn3
dc3db2373c
Slightly simplify write_bitcode_to_file handling
...
This also causes bitcode to be saved for the allocator shim with
-Csave-temps.
2026-03-03 15:24:16 +00:00
bjorn3
5aa980e6dc
Replace CodegenResults with CompiledModules
...
This is already CodegenResults without CrateInfo. The driver can
calculate the CrateInfo and pass it by-ref to the backend. Using
CompiledModules makes it a bit easier to move some other things out of
the backend as will be necessary for moving LTO to the link phase.
2026-03-02 16:39:41 +00:00
bjorn3
a192c617ec
Use CompiledModules inside CodegenResults
...
In preparation for fully replacing CodegenResults with CompiledModules.
2026-03-02 16:39:13 +00:00
bjorn3
3decb52756
Remove last remaining ModuleBuffer/ThinBuffer duplication
2026-02-21 11:47:46 +00:00
bjorn3
ff454c12cd
Simplify function signatures of serialize_module and prepare_thin
2026-02-21 11:47:45 +00:00
Jonathan Brouwer
b0cdafbd4a
Rollup merge of #152455 - JonathanBrouwer:remove_translation, r=jdonszelmann
...
Remove the translation `-Z` options and the `Translator` type.
This PR implements MCP https://github.com/rust-lang/compiler-team/issues/967
It is split up into individually reviewable commits, each commit passes tests:
* https://github.com/rust-lang/rust/commit/678211956793a2e772414a71700a21525af6e67b Removes the translation compiler options from the session
* https://github.com/rust-lang/rust/commit/8f300d02fe8d2f01a39425925afd4cf3e15a822b Removes the now empty `Translator` type
* https://github.com/rust-lang/rust/commit/ab715c536fbd4ac09409e9a44eea2e25ea8a4f48 Renames `translate_message` to `format_diag_message`, as the function no longer does any translation
* https://github.com/rust-lang/rust/commit/8bcbc3f766af6242dcb52afe1ef4f6b1a9685019 Removes a section describing the removed compiler options from the rustc dev guide
2026-02-20 22:00:57 +01:00
Jonathan Brouwer
bbce734ce0
Rollup merge of #152527 - bjorn3:remove_z_emit_thin_lto, r=cuviper
...
Remove -Zemit-thin-lto flag
As far as I can tell it was introduced in https://github.com/rust-lang/rust/pull/98162 to allow fat LTO with `-Clinker-plugin-lto`. In https://github.com/rust-lang/rust/pull/136840 a change was made to automatically disable ThinLTO summary generation when `-Clinker-plugin-lto -Clto=fat` is used, so we can safely remove it.
Fixes rust-lang/rust#152490
2026-02-20 22:00:56 +01:00
bjorn3
6366a698e3
Remove -Zemit-thin-lto flag
...
As far as I can tell it was introduced to allow fat LTO with
-Clinker-plugin-lto. Later a change was made to automatically disable
ThinLTO summary generation when -Clinker-plugin-lto -Clto=fat is used,
so we can safely remove it.
2026-02-20 12:19:41 +00:00
Jana Dönszelmann
decec173ec
remove AttributeKind everywhere
2026-02-20 09:50:16 +01:00
Jana Dönszelmann
9a9443950d
change all uses
2026-02-20 09:50:16 +01:00
bjorn3
2c44bb13c6
Support serializing CodegenContext
2026-02-12 12:44:15 +00:00
bjorn3
506ed6dcb7
Remove SelfProfilerRef from CodegenContext
...
It can't be serialized to a file.
2026-02-12 12:44:14 +00:00
Jacob Pratt
596faf0f26
Rollup merge of #152481 - bjorn3:backends_reduce_duplication, r=fmease
...
Use cg_ssa's produce_final_output_artifacts in cg_clif
2026-02-12 00:41:11 -05:00
Jonathan Brouwer
8f300d02fe
Remove the Translator type
2026-02-11 17:52:00 +01:00
bjorn3
1106018af0
Use cg_ssa's produce_final_output_artifacts in cg_clif
2026-02-11 12:36:19 +00:00
bjorn3
f49223c443
Remove tm_factory field from CodegenContext
...
This is necessary to support serializing the CodegenContext to a .rlink
file in the future for moving LTO to the -Zlink-only step.
2026-02-11 12:18:04 +00:00
bjorn3
2d07e81a5c
Move target machine factory error reporting into codegen backend
2026-02-11 10:53:38 +00:00
bjorn3
639cb694df
Replace Registry type with a lazily initialized static
...
And move try_find_description to rustc_errors::codes.
2026-02-05 10:54:46 +00:00
Oscar Bray
f6d76385e2
Port #![no_builtins] to the attribute parser.
2026-01-21 21:08:28 +00:00
Jacob Pratt
2206d935f7
Rollup merge of #149209 - lto_refactors8, r=jackh726
...
Move LTO to OngoingCodegen::join
This will make it easier to in the future move all this code to link_binary.
Follow up to https://github.com/rust-lang/rust/pull/147810
Part of https://github.com/rust-lang/compiler-team/issues/908
2026-01-21 02:04:01 -05:00
Zalathar
7ec34defe9
Temporarily re-export assert_matches! to reduce stabilization churn
2026-01-19 18:26:53 +11:00
bjorn3
b13bb4b2da
Move LTO to OngoingCodegen::join
2025-11-23 10:33:52 +00:00
bjorn3
2d7c571391
Remove SharedEmitter from CodegenContext
2025-11-23 10:33:52 +00:00
bjorn3
b93b4b003e
Remove opts field from CodegenContext
2025-11-23 10:33:52 +00:00
bjorn3
12f41b5194
More explicit handling of the allocator shim around LTO
2025-11-23 10:33:52 +00:00
bjorn3
2a280130db
Allow passing primary spans to SharedEmitter
2025-11-21 14:37:10 +00:00
bjorn3
7f7b3488c0
Introduce InlineAsmError type
2025-11-21 14:16:12 +00:00
Jacob Pratt
c63793952e
Rollup merge of #145768 - ZuseZ4:offload-device, r=oli-obk
...
Offload device
LLVM's offload functionality usually expects an extra dyn_ptr argument. We could avoid it,b ut likely gonna need it very soon in one of the follow-up PRs (e.g. to request shared memory). So we might as well already add it.
This PR adds a %dyn_ptr ptr to GPUKernel ABI functions, if the offload feature is enabled.
WIP
r? ```@ghost```
2025-11-07 00:21:17 -05:00
Manuel Drehwald
360b38cceb
Fix device code generation, to account for an implicit dyn_ptr argument.
2025-11-06 03:34:38 -05:00
Paul Kirth
e207006ad3
Add default sanitizers to TargetOptions
...
Some sanitizers are part of a system's ABI, like the shadow call stack
on Aarch64 and RISC-V Fuchsia. Typically ABI options have other
spellings, but LLVM has, for historical reasons, marked this as a
sanitizer instead of an alternate ABI option. As a result, Fuchsia
targets may not be compiled against the correct ABI unless this option
is set. This hasn't caused correctness problems, since the backend
reserves the SCS register, and thus preserves its value. But this is an
issue for unwinding, as the SCS will not be an array of PCs describing
the call complete call chain, and will have gaps from callers that don't
use the correct ABI.
In the long term, I'd like to see all the sanitizer configs that all
frontends copy from clang moved into llvm's libFrontend, and exposed so
that frontend consumers can use a small set of simple APIs to use
sanitizers in a consistent way across the LLVM ecosystem, but that work
is not yet ready today.
2025-11-03 17:36:32 -06:00
bjorn3
5a8ffa4bef
Skip codegen_crate call in check mode
2025-10-24 10:25:13 +00:00
bors
6244effd03
Auto merge of #147810 - bjorn3:lto_refactors6, r=wesleywiser
...
Split LTO out of the main codegen coordinator event loop into a separate event loop on the same thread
This will make it easier to in the future move all this code to link_binary.
Follow up to https://github.com/rust-lang/rust/pull/146209
Part of https://github.com/rust-lang/compiler-team/issues/908
2025-10-22 22:50:15 +00:00
Zalathar
98c95c966b
Remove current code for embedding command-line args in PDB
2025-10-18 12:24:40 +11:00
bjorn3
a077dbd686
Better timers for LTO
2025-10-16 15:01:34 +00:00
bjorn3
53867f23b2
Separate thin LTO message and work item types
2025-10-16 15:01:34 +00:00
bjorn3
3cf3ec667a
Move thin LTO out of the main loop too
2025-10-16 15:01:34 +00:00
bjorn3
a6725ab7b3
Move fat LTO out of the main coordinator loop
2025-10-16 15:01:33 +00:00
bjorn3
b1d5922285
Move desc out of WorkItem::short_description to allow reusing in a future commit
2025-10-16 15:01:33 +00:00
bjorn3
3a1ae064a7
Move timers into execute_*_work_item
2025-09-06 18:37:23 +00:00
bjorn3
f2933b34a8
Remove want_summary argument from prepare_thin
...
It is always false nowadays. ThinLTO summary writing is instead done by
llvm_optimize.
2025-09-06 18:37:23 +00:00
bjorn3
2cf94b92ca
Ensure fat LTO doesn't merge everything into the allocator module
2025-09-06 13:31:41 +00:00
bjorn3
0271359768
Make the allocator shim participate in LTO again
2025-09-06 08:35:55 +00:00
bjorn3
319fe230f0
Special case allocator module submission to avoid special casing it elsewhere
...
A lot of places had special handling just in case they would get an
allocator module even though most of these places could never get one or
would have a trivial implementation for the allocator module. Moving all
handling of the allocator module to a single place simplifies things a
fair bit.
2025-09-04 08:21:10 +00:00
bjorn3
eea81b5d75
Ensure the allocator shim never participates in LTO
...
Making it participate in LTO would be incorrect if you compile a crate
as both a dylib (which needs it) and rlib (which must not include it) in
the same rustc invocation. With linker plugin LTO, the allocator shim
will still participate in LTO as it is safe to do so in that case.
2025-09-04 08:21:10 +00:00
Ramon de C Valle
916b55e082
Revert "Make lto and linker-plugin-lto work the same for compiler_builtins"
...
This reverts commit cf8753e4f9 and fixes the
regressions reported.
2025-09-02 13:11:19 -07:00