From 1185804394c5e9b583afa6f110aa8f5a6985a547 Mon Sep 17 00:00:00 2001 From: Jimmy Date: Wed, 14 Aug 2019 20:47:40 +0000 Subject: [PATCH 1/2] LLVMPassManagerBuilderRef Extensions --- .../Extensions/LLVMPassManagerBuilderRef.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs b/sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs index c2e69b29..d819cbcb 100644 --- a/sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs +++ b/sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs @@ -2,7 +2,7 @@ namespace LLVMSharp { - public partial struct LLVMPassManagerBuilderRef : IEquatable + public unsafe partial struct LLVMPassManagerBuilderRef : IEquatable, IDisposable { public static bool operator ==(LLVMPassManagerBuilderRef left, LLVMPassManagerBuilderRef right) => left.Pointer == right.Pointer; @@ -13,5 +13,32 @@ public partial struct LLVMPassManagerBuilderRef : IEquatable Pointer == other.Pointer; public override int GetHashCode() => Pointer.GetHashCode(); + + public void Dispose() { + if (Pointer != IntPtr.Zero) { + LLVM.PassManagerBuilderDispose(this); + Pointer = IntPtr.Zero; + } + } + + public void SetOptLevel(uint OptLevel) => LLVM.PassManagerBuilderSetOptLevel(this, OptLevel); + + public void SetSizeLevel(uint SizeLevel) => LLVM.PassManagerBuilderSetSizeLevel(this, SizeLevel); + + public void SetDisableUnitAtATime(int Value) => LLVM.PassManagerBuilderSetDisableUnitAtATime(this, Value); + + public void SetDisableUnrollLoops(int Value) => LLVM.PassManagerBuilderSetDisableUnrollLoops(this, Value); + + public void SetDisableSimplifyLibCalls(int Value) => LLVM.PassManagerBuilderSetDisableSimplifyLibCalls(this, Value); + + public void UseInlinerWithThreshold(uint Threshold) => LLVM.PassManagerBuilderUseInlinerWithThreshold(this, Threshold); + + public void PopulateFunctionPassManager(LLVMPassManagerRef PM) => LLVM.PassManagerBuilderPopulateFunctionPassManager(this, PM); + + public void PopulateModulePassManager(LLVMPassManagerRef PM) => LLVM.PassManagerBuilderPopulateModulePassManager(this, PM); + + public void PopulateLTOPassManager(LLVMPassManagerRef PM, int Internalize, int RunInliner) { + LLVM.PassManagerBuilderPopulateLTOPassManager(this, PM, Internalize, RunInliner); + } } } From f1c6e4fee87e5c793cb206d8d79bbe51a48a2961 Mon Sep 17 00:00:00 2001 From: Jimmy Date: Thu, 15 Aug 2019 13:40:39 -0400 Subject: [PATCH 2/2] coding style for PassManagerBuilderRef extensions --- .../LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs b/sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs index d819cbcb..adbe1119 100644 --- a/sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs +++ b/sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs @@ -14,8 +14,10 @@ public unsafe partial struct LLVMPassManagerBuilderRef : IEquatable Pointer.GetHashCode(); - public void Dispose() { - if (Pointer != IntPtr.Zero) { + public void Dispose() + { + if (Pointer != IntPtr.Zero) + { LLVM.PassManagerBuilderDispose(this); Pointer = IntPtr.Zero; } @@ -37,7 +39,8 @@ public void Dispose() { public void PopulateModulePassManager(LLVMPassManagerRef PM) => LLVM.PassManagerBuilderPopulateModulePassManager(this, PM); - public void PopulateLTOPassManager(LLVMPassManagerRef PM, int Internalize, int RunInliner) { + public void PopulateLTOPassManager(LLVMPassManagerRef PM, int Internalize, int RunInliner) + { LLVM.PassManagerBuilderPopulateLTOPassManager(this, PM, Internalize, RunInliner); } }