mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-13 12:36:47 +00:00
embed-bitcode is no longer used in iOS
This commit is contained in:
parent
0b1bf71a71
commit
3a23669787
@ -955,24 +955,7 @@ pub(crate) fn bitcode_section_name(cgcx: &CodegenContext<LlvmCodegenBackend>) ->
|
||||
}
|
||||
}
|
||||
|
||||
/// Embed the bitcode of an LLVM module in the LLVM module itself.
|
||||
///
|
||||
/// This is done primarily for iOS where it appears to be standard to compile C
|
||||
/// code at least with `-fembed-bitcode` which creates two sections in the
|
||||
/// executable:
|
||||
///
|
||||
/// * __LLVM,__bitcode
|
||||
/// * __LLVM,__cmdline
|
||||
///
|
||||
/// It appears *both* of these sections are necessary to get the linker to
|
||||
/// recognize what's going on. A suitable cmdline value is taken from the
|
||||
/// target spec.
|
||||
///
|
||||
/// Furthermore debug/O1 builds don't actually embed bitcode but rather just
|
||||
/// embed an empty section.
|
||||
///
|
||||
/// Basically all of this is us attempting to follow in the footsteps of clang
|
||||
/// on iOS. See #35968 for lots more info.
|
||||
/// Embed the bitcode of an LLVM module for LTO in the LLVM module itself.
|
||||
unsafe fn embed_bitcode(
|
||||
cgcx: &CodegenContext<LlvmCodegenBackend>,
|
||||
llcx: &llvm::Context,
|
||||
|
@ -119,17 +119,14 @@ files. It takes one of the following values:
|
||||
* `n`, `no`, `off` or `false`: omit bitcode from rlibs.
|
||||
|
||||
LLVM bitcode is required when rustc is performing link-time optimization (LTO).
|
||||
It is also required on some targets like iOS ones where vendors look for LLVM
|
||||
bitcode. Embedded bitcode will appear in rustc-generated object files inside of
|
||||
a section whose name is defined by the target platform. Most of the time this is
|
||||
`.llvmbc`.
|
||||
Embedded bitcode will appear in rustc-generated object files inside of a section
|
||||
whose name is defined by the target platform. Most of the time this is `.llvmbc`.
|
||||
|
||||
The use of `-C embed-bitcode=no` can significantly improve compile times and
|
||||
reduce generated file sizes if your compilation does not actually need bitcode
|
||||
(e.g. if you're not compiling for iOS or you're not performing LTO). For these
|
||||
reasons, Cargo uses `-C embed-bitcode=no` whenever possible. Likewise, if you
|
||||
are building directly with `rustc` we recommend using `-C embed-bitcode=no`
|
||||
whenever you are not using LTO.
|
||||
(e.g. if you're not performing LTO). For these reasons, Cargo uses `-C embed-bitcode=no`
|
||||
whenever possible. Likewise, if you are building directly with `rustc` we recommend
|
||||
using `-C embed-bitcode=no` whenever you are not using LTO.
|
||||
|
||||
If combined with `-C lto`, `-C embed-bitcode=no` will cause `rustc` to abort
|
||||
at start-up, because the combination is invalid.
|
||||
|
Loading…
Reference in New Issue
Block a user