提交 b7a69198 编写于 作者: B Brian Anderson

rustc: Dispose of LLVM passes in test cases

上级 1120f8c1
......@@ -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 unsafe fn LLVMRunPassManager(PM: PassManagerRef,
#[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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册