Skip to content

Commit

Permalink
Add LLVMPassManagerBuilderRef Extensions (#114)
Browse files Browse the repository at this point in the history
* LLVMPassManagerBuilderRef Extensions

* coding style for PassManagerBuilderRef extensions
  • Loading branch information
talyian authored and tannergooding committed Aug 15, 2019
1 parent 95e9ecd commit 96cd847
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace LLVMSharp
{
public partial struct LLVMPassManagerBuilderRef : IEquatable<LLVMPassManagerBuilderRef>
public unsafe partial struct LLVMPassManagerBuilderRef : IEquatable<LLVMPassManagerBuilderRef>, IDisposable
{
public static bool operator ==(LLVMPassManagerBuilderRef left, LLVMPassManagerBuilderRef right) => left.Pointer == right.Pointer;

Expand All @@ -13,5 +13,35 @@ public partial struct LLVMPassManagerBuilderRef : IEquatable<LLVMPassManagerBuil
public bool Equals(LLVMPassManagerBuilderRef other) => 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);
}
}
}

0 comments on commit 96cd847

Please sign in to comment.