Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add LLVMPassManagerBuilderRef Extensions #114

Merged
merged 2 commits into from Aug 15, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
32 changes: 31 additions & 1 deletion sources/LLVMSharp/Extensions/LLVMPassManagerBuilderRef.cs
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);
}
}
}