rustc: Dispose of LLVM passes in test cases
This commit is contained in:
parent
1120f8c1e5
commit
b7a6919899
4 changed files with 21 additions and 3 deletions
|
|
@ -299,18 +299,27 @@ fn passes_exist() {
|
|||
let mut failed = ~[];
|
||||
unsafe { llvm::LLVMInitializePasses(); }
|
||||
for analysis_passes.each() |&(name,_)| {
|
||||
if !create_pass(name).is_some() {
|
||||
let pass = create_pass(name);
|
||||
if !pass.is_some() {
|
||||
failed.push(name);
|
||||
} else {
|
||||
unsafe { llvm::LLVMDestroyPass(pass.get()) }
|
||||
}
|
||||
}
|
||||
for transform_passes.each() |&(name,_)| {
|
||||
if !create_pass(name).is_some() {
|
||||
let pass = create_pass(name);
|
||||
if !pass.is_some() {
|
||||
failed.push(name);
|
||||
} else {
|
||||
unsafe { llvm::LLVMDestroyPass(pass.get()) }
|
||||
}
|
||||
}
|
||||
for utility_passes.each() |&(name,_)| {
|
||||
if !create_pass(name).is_some() {
|
||||
let pass = create_pass(name);
|
||||
if !pass.is_some() {
|
||||
failed.push(name);
|
||||
} else {
|
||||
unsafe { llvm::LLVMDestroyPass(pass.get()) }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1684,6 +1684,9 @@ pub mod llvm {
|
|||
#[fast_ffi]
|
||||
pub unsafe fn LLVMCreatePass(PassName:*c_char) -> PassRef;
|
||||
|
||||
#[fast_ffi]
|
||||
pub unsafe fn LLVMDestroyPass(P: PassRef);
|
||||
|
||||
/** Adds a verification pass. */
|
||||
#[fast_ffi]
|
||||
pub unsafe fn LLVMAddVerifierPass(PM: PassManagerRef);
|
||||
|
|
|
|||
|
|
@ -63,3 +63,8 @@ extern "C" LLVMPassRef LLVMCreatePass(const char * PassName) {
|
|||
return (LLVMPassRef)0;
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void LLVMDestroyPass(LLVMPassRef PassRef) {
|
||||
Pass *p = unwrap(PassRef);
|
||||
delete p;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -588,6 +588,7 @@ LLVMInlineAsm
|
|||
LLVMInitializePasses
|
||||
LLVMAddPass
|
||||
LLVMCreatePass
|
||||
LLVMDestroyPass
|
||||
LLVMDIBuilderCreate
|
||||
LLVMDIBuilderDispose
|
||||
LLVMDIBuilderFinalize
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue