#[non_exhaustive]pub struct TargetInfo {
pub triple: Triple,
pub pointer_width: u32,
pub little_endian: bool,
pub char_is_signed: bool,
pub long_width: u32,
pub long_double_width: u32,
pub bit_int_granule: u32,
pub object_format: ObjectFormat,
}Expand description
The facts about a target that the compiler reads instead of hard-coding.
This is the whole of what a pass is allowed to know about where its output will run.
It grows, and every field added here is one fewer #[cfg] somewhere it should not be.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.triple: TripleThe triple this describes.
pointer_width: u32Width of a pointer in bits.
little_endian: boolWhether bytes are ordered little end first.
char_is_signed: boolWhether a bare char is signed.
Signed on x86-64 and unsigned on AArch64 Linux, which is the classic source of code that works on one and not the other, so it is data rather than an assumption.
long_width: u32Width of long in bits. This is the field that separates the LP64 world from
Windows LLP64.
long_double_width: u32Width of long double in bits: 80 bits of x87 stored in 128 on SysV x86-64,
64 on Apple platforms, 64 on Windows.
bit_int_granule: u32The granule a _BitInt wider than 64 bits is laid out in, in bits.
Above 64 bits the psABIs stop treating a _BitInt like a standard integer type and
start treating it like an array of these, so its size is rounded up to a multiple of
this and its alignment is this. It is 64 on x86-64 and RISC-V and 128 on AArch64, which
is why _BitInt(65) is sixteen bytes aligned to eight on one and sixteen bytes aligned
to sixteen on the other. Measured with clang 18 on x86-64 Linux and clang on AArch64
Darwin rather than read off the documents.
object_format: ObjectFormatThe object format to emit.
Implementations§
Trait Implementations§
Source§impl Clone for TargetInfo
impl Clone for TargetInfo
Source§fn clone(&self) -> TargetInfo
fn clone(&self) -> TargetInfo
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more