rustc_codegen_llvm: use safe references for Pass.
This commit is contained in:
parent
e9546601a1
commit
55af020194
3 changed files with 9 additions and 12 deletions
|
|
@ -468,8 +468,7 @@ fn run_pass_manager(cgcx: &CodegenContext,
|
|||
|
||||
if config.verify_llvm_ir {
|
||||
let pass = llvm::LLVMRustFindAndCreatePass("verify\0".as_ptr() as *const _);
|
||||
assert!(!pass.is_null());
|
||||
llvm::LLVMRustAddPass(pm, pass);
|
||||
llvm::LLVMRustAddPass(pm, pass.unwrap());
|
||||
}
|
||||
|
||||
// When optimizing for LTO we don't actually pass in `-O0`, but we force
|
||||
|
|
@ -503,8 +502,7 @@ fn run_pass_manager(cgcx: &CodegenContext,
|
|||
|
||||
if config.verify_llvm_ir {
|
||||
let pass = llvm::LLVMRustFindAndCreatePass("verify\0".as_ptr() as *const _);
|
||||
assert!(!pass.is_null());
|
||||
llvm::LLVMRustAddPass(pm, pass);
|
||||
llvm::LLVMRustAddPass(pm, pass.unwrap());
|
||||
}
|
||||
|
||||
time_ext(cgcx.time_passes, None, "LTO passes", ||
|
||||
|
|
|
|||
|
|
@ -522,10 +522,10 @@ unsafe fn optimize(cgcx: &CodegenContext,
|
|||
// manager.
|
||||
let addpass = |pass_name: &str| {
|
||||
let pass_name = CString::new(pass_name).unwrap();
|
||||
let pass = llvm::LLVMRustFindAndCreatePass(pass_name.as_ptr());
|
||||
if pass.is_null() {
|
||||
return false;
|
||||
}
|
||||
let pass = match llvm::LLVMRustFindAndCreatePass(pass_name.as_ptr()) {
|
||||
Some(pass) => pass,
|
||||
None => return false,
|
||||
};
|
||||
let pass_manager = match llvm::LLVMRustPassKind(pass) {
|
||||
llvm::PassKind::Function => fpm,
|
||||
llvm::PassKind::Module => mpm,
|
||||
|
|
|
|||
|
|
@ -397,7 +397,6 @@ extern { pub type ObjectFile; }
|
|||
extern { pub type SectionIterator; }
|
||||
pub type SectionIteratorRef = *mut SectionIterator;
|
||||
extern { pub type Pass; }
|
||||
pub type PassRef = *mut Pass;
|
||||
extern { pub type TargetMachine; }
|
||||
pub type TargetMachineRef = *const TargetMachine;
|
||||
extern { pub type Archive; }
|
||||
|
|
@ -1414,9 +1413,9 @@ extern "C" {
|
|||
pub fn LLVMIsAConstantInt(value_ref: &Value) -> Option<&Value>;
|
||||
pub fn LLVMIsAConstantFP(value_ref: &Value) -> Option<&Value>;
|
||||
|
||||
pub fn LLVMRustPassKind(Pass: PassRef) -> PassKind;
|
||||
pub fn LLVMRustFindAndCreatePass(Pass: *const c_char) -> PassRef;
|
||||
pub fn LLVMRustAddPass(PM: PassManagerRef, Pass: PassRef);
|
||||
pub fn LLVMRustPassKind(Pass: &Pass) -> PassKind;
|
||||
pub fn LLVMRustFindAndCreatePass(Pass: *const c_char) -> Option<&'static mut Pass>;
|
||||
pub fn LLVMRustAddPass(PM: PassManagerRef, Pass: &'static mut Pass);
|
||||
|
||||
pub fn LLVMRustHasFeature(T: TargetMachineRef, s: *const c_char) -> bool;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue