Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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);
}
}
}