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() {
299299 let mut failed = ~[ ] ;
300300 unsafe { llvm:: LLVMInitializePasses ( ) ; }
301301 for analysis_passes. each( ) |& ( name, _) | {
302- if !create_pass ( name) . is_some ( ) {
302+ let pass = create_pass ( name) ;
303+ if !pass. is_some ( ) {
303304 failed. push ( name) ;
305+ } else {
306+ unsafe { llvm:: LLVMDestroyPass ( pass. get ( ) ) }
304307 }
305308 }
306309 for transform_passes. each( ) |& ( name, _) | {
307- if !create_pass ( name) . is_some ( ) {
310+ let pass = create_pass ( name) ;
311+ if !pass. is_some ( ) {
308312 failed. push ( name) ;
313+ } else {
314+ unsafe { llvm:: LLVMDestroyPass ( pass. get ( ) ) }
309315 }
310316 }
311317 for utility_passes. each( ) |& ( name, _) | {
312- if !create_pass ( name) . is_some ( ) {
318+ let pass = create_pass ( name) ;
319+ if !pass. is_some ( ) {
313320 failed. push ( name) ;
321+ } else {
322+ unsafe { llvm:: LLVMDestroyPass ( pass. get ( ) ) }
314323 }
315324 }
316325
Original file line number Diff line number Diff line change @@ -1684,6 +1684,9 @@ pub mod llvm {
16841684 #[ fast_ffi]
16851685 pub unsafe fn LLVMCreatePass ( PassName : * c_char ) -> PassRef ;
16861686
1687+ #[ fast_ffi]
1688+ pub unsafe fn LLVMDestroyPass ( P : PassRef ) ;
1689+
16871690 /** Adds a verification pass. */
16881691 #[ fast_ffi]
16891692 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) {
6363 return (LLVMPassRef)0 ;
6464 }
6565}
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
588588LLVMInitializePasses
589589LLVMAddPass
590590LLVMCreatePass
591+ LLVMDestroyPass
591592LLVMDIBuilderCreate
592593LLVMDIBuilderDispose
593594LLVMDIBuilderFinalize
You can’t perform that action at this time.
0 commit comments