diff options
| author | bors <bors@rust-lang.org> | 2022-07-21 10:13:59 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-07-21 10:13:59 +0000 |
| commit | 74f600b990240556c9a355c5d03293a10934bd1b (patch) | |
| tree | 4b12cbd785b255a340b0ff57ec22d9e49af78a5c /compiler/rustc_session | |
| parent | ceeb5ade201e4181c6d5df2ba96ae5fb2193aadc (diff) | |
| parent | 724c91234dd49b88d70ebead406d09105695c3e5 (diff) | |
| download | rust-74f600b990240556c9a355c5d03293a10934bd1b.tar.gz rust-74f600b990240556c9a355c5d03293a10934bd1b.zip | |
Auto merge of #98162 - nextsilicon:support_lto_embed_bitcode, r=davidtwco
Allow to disable thinLTO buffer to support lto-embed-bitcode lld feature Hello This change is to fix issue (https://github.com/rust-lang/rust/issues/84395) in which passing "-lto-embed-bitcode=optimized" to lld when linking rust code via linker-plugin-lto doesn't produce the expected result. Instead of emitting a single unified module into a llvmbc section of the linked elf, it emits multiple submodules. This is caused because rustc emits the BC modules after running llvm `createWriteThinLTOBitcodePass` pass. Which in turn triggers a thinLTO linkage and causes the said issue. This patch allows via compiler flag (-Cemit-thin-lto=<bool>) to select between running `createWriteThinLTOBitcodePass` and `createBitcodeWriterPass`. Note this pattern of selecting between those 2 passes is common inside of LLVM code. The default is to match the old behavior.
Diffstat (limited to 'compiler/rustc_session')
| -rw-r--r-- | compiler/rustc_session/src/options.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 5d365fc5246..f99b20efd71 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -1279,6 +1279,8 @@ options! { "version of DWARF debug information to emit (default: 2 or 4, depending on platform)"), emit_stack_sizes: bool = (false, parse_bool, [UNTRACKED], "emit a section containing stack size metadata (default: no)"), + emit_thin_lto: bool = (true, parse_bool, [TRACKED], + "emit the bc module with thin LTO info (default: yes)"), fewer_names: Option<bool> = (None, parse_opt_bool, [TRACKED], "reduce memory use by retaining fewer names within compilation artifacts (LLVM-IR) \ (default: no)"), |
