rustc_llvm: expose FloatABIType target machine parameter
This commit is contained in:
parent
f95c996750
commit
fff026c8e5
4 changed files with 39 additions and 14 deletions
|
@ -25,7 +25,7 @@ impl OwnedTargetMachine {
|
|||
model: llvm::CodeModel,
|
||||
reloc: llvm::RelocModel,
|
||||
level: llvm::CodeGenOptLevel,
|
||||
use_soft_fp: bool,
|
||||
float_abi: llvm::FloatAbi,
|
||||
function_sections: bool,
|
||||
data_sections: bool,
|
||||
unique_section_names: bool,
|
||||
|
@ -57,7 +57,7 @@ impl OwnedTargetMachine {
|
|||
model,
|
||||
reloc,
|
||||
level,
|
||||
use_soft_fp,
|
||||
float_abi,
|
||||
function_sections,
|
||||
data_sections,
|
||||
unique_section_names,
|
||||
|
|
|
@ -40,7 +40,7 @@ use crate::errors::{
|
|||
WithLlvmError, WriteBytecode,
|
||||
};
|
||||
use crate::llvm::diagnostic::OptimizationDiagnosticKind::*;
|
||||
use crate::llvm::{self, DiagnosticInfo, PassManager};
|
||||
use crate::llvm::{self, DiagnosticInfo, FloatAbi, PassManager};
|
||||
use crate::type_::Type;
|
||||
use crate::{LlvmCodegenBackend, ModuleLlvm, base, common, llvm_util};
|
||||
|
||||
|
@ -189,12 +189,12 @@ pub(crate) fn target_machine_factory(
|
|||
let reloc_model = to_llvm_relocation_model(sess.relocation_model());
|
||||
|
||||
let (opt_level, _) = to_llvm_opt_settings(optlvl);
|
||||
let use_softfp = if sess.target.arch == "arm" {
|
||||
sess.opts.cg.soft_float
|
||||
let float_abi = if sess.target.arch == "arm" && sess.opts.cg.soft_float {
|
||||
FloatAbi::Soft
|
||||
} else {
|
||||
// `validate_commandline_args_with_session_available` has already warned about this being
|
||||
// ignored. Let's make sure LLVM doesn't suddenly start using this flag on more targets.
|
||||
false
|
||||
FloatAbi::Default
|
||||
};
|
||||
|
||||
let ffunction_sections =
|
||||
|
@ -290,7 +290,7 @@ pub(crate) fn target_machine_factory(
|
|||
code_model,
|
||||
reloc_model,
|
||||
opt_level,
|
||||
use_softfp,
|
||||
float_abi,
|
||||
ffunction_sections,
|
||||
fdata_sections,
|
||||
funique_section_names,
|
||||
|
|
|
@ -526,7 +526,7 @@ pub struct SanitizerOptions {
|
|||
pub sanitize_kernel_address_recover: bool,
|
||||
}
|
||||
|
||||
/// LLVMRelocMode
|
||||
/// LLVMRustRelocModel
|
||||
#[derive(Copy, Clone, PartialEq)]
|
||||
#[repr(C)]
|
||||
pub enum RelocModel {
|
||||
|
@ -538,6 +538,15 @@ pub enum RelocModel {
|
|||
ROPI_RWPI,
|
||||
}
|
||||
|
||||
/// LLVMRustFloatABI
|
||||
#[derive(Copy, Clone, PartialEq)]
|
||||
#[repr(C)]
|
||||
pub enum FloatAbi {
|
||||
Default,
|
||||
Soft,
|
||||
Hard,
|
||||
}
|
||||
|
||||
/// LLVMRustCodeModel
|
||||
#[derive(Copy, Clone)]
|
||||
#[repr(C)]
|
||||
|
@ -2192,7 +2201,7 @@ unsafe extern "C" {
|
|||
Model: CodeModel,
|
||||
Reloc: RelocModel,
|
||||
Level: CodeGenOptLevel,
|
||||
UseSoftFP: bool,
|
||||
FloatABIType: FloatAbi,
|
||||
FunctionSections: bool,
|
||||
DataSections: bool,
|
||||
UniqueSectionNames: bool,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue