File tree Expand file tree Collapse file tree 4 files changed +21
-3
lines changed Expand file tree Collapse file tree 4 files changed +21
-3
lines changed Original file line number Diff line number Diff line change @@ -299,18 +299,27 @@ fn passes_exist() {
299
299
let mut failed = ~[ ] ;
300
300
unsafe { llvm:: LLVMInitializePasses ( ) ; }
301
301
for analysis_passes. each( ) |& ( name, _) | {
302
- if !create_pass ( name) . is_some ( ) {
302
+ let pass = create_pass ( name) ;
303
+ if !pass. is_some ( ) {
303
304
failed. push ( name) ;
305
+ } else {
306
+ unsafe { llvm:: LLVMDestroyPass ( pass. get ( ) ) }
304
307
}
305
308
}
306
309
for transform_passes. each( ) |& ( name, _) | {
307
- if !create_pass ( name) . is_some ( ) {
310
+ let pass = create_pass ( name) ;
311
+ if !pass. is_some ( ) {
308
312
failed. push ( name) ;
313
+ } else {
314
+ unsafe { llvm:: LLVMDestroyPass ( pass. get ( ) ) }
309
315
}
310
316
}
311
317
for utility_passes. each( ) |& ( name, _) | {
312
- if !create_pass ( name) . is_some ( ) {
318
+ let pass = create_pass ( name) ;
319
+ if !pass. is_some ( ) {
313
320
failed. push ( name) ;
321
+ } else {
322
+ unsafe { llvm:: LLVMDestroyPass ( pass. get ( ) ) }
314
323
}
315
324
}
316
325
Original file line number Diff line number Diff line change @@ -1684,6 +1684,9 @@ pub mod llvm {
1684
1684
#[ fast_ffi]
1685
1685
pub unsafe fn LLVMCreatePass ( PassName : * c_char ) -> PassRef ;
1686
1686
1687
+ #[ fast_ffi]
1688
+ pub unsafe fn LLVMDestroyPass ( P : PassRef ) ;
1689
+
1687
1690
/** Adds a verification pass. */
1688
1691
#[ fast_ffi]
1689
1692
pub unsafe fn LLVMAddVerifierPass ( PM : PassManagerRef ) ;
Original file line number Diff line number Diff line change @@ -63,3 +63,8 @@ extern "C" LLVMPassRef LLVMCreatePass(const char * PassName) {
63
63
return (LLVMPassRef)0 ;
64
64
}
65
65
}
66
+
67
+ extern " C" void LLVMDestroyPass (LLVMPassRef PassRef) {
68
+ Pass *p = unwrap (PassRef);
69
+ delete p;
70
+ }
Original file line number Diff line number Diff line change @@ -588,6 +588,7 @@ LLVMInlineAsm
588
588
LLVMInitializePasses
589
589
LLVMAddPass
590
590
LLVMCreatePass
591
+ LLVMDestroyPass
591
592
LLVMDIBuilderCreate
592
593
LLVMDIBuilderDispose
593
594
LLVMDIBuilderFinalize
You can’t perform that action at this time.
0 commit comments