//===- transforms_pmbuilder.go - Bindings for PassManagerBuilder ----------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file defines bindings for the PassManagerBuilder class. // //===----------------------------------------------------------------------===// package llvm /* #include "llvm-c/Transforms/PassManagerBuilder.h" #include "llvm-c/Transforms/Coroutines.h" */ import "C" type PassManagerBuilder struct { C C.LLVMPassManagerBuilderRef } func NewPassManagerBuilder() (pmb PassManagerBuilder) { pmb.C = C.LLVMPassManagerBuilderCreate() return } func (pmb PassManagerBuilder) SetOptLevel(level int) { C.LLVMPassManagerBuilderSetOptLevel(pmb.C, C.uint(level)) } func (pmb PassManagerBuilder) SetSizeLevel(level int) { C.LLVMPassManagerBuilderSetSizeLevel(pmb.C, C.uint(level)) } func (pmb PassManagerBuilder) Populate(pm PassManager) { C.LLVMPassManagerBuilderPopulateModulePassManager(pmb.C, pm.C) } func (pmb PassManagerBuilder) PopulateFunc(pm PassManager) { C.LLVMPassManagerBuilderPopulateFunctionPassManager(pmb.C, pm.C) } func (pmb PassManagerBuilder) PopulateLTOPassManager(pm PassManager, internalize bool, runInliner bool) { C.LLVMPassManagerBuilderPopulateLTOPassManager(pmb.C, pm.C, boolToLLVMBool(internalize), boolToLLVMBool(runInliner)) } func (pmb PassManagerBuilder) Dispose() { C.LLVMPassManagerBuilderDispose(pmb.C) } func (pmb PassManagerBuilder) SetDisableUnitAtATime(val bool) { C.LLVMPassManagerBuilderSetDisableUnitAtATime(pmb.C, boolToLLVMBool(val)) } func (pmb PassManagerBuilder) SetDisableUnrollLoops(val bool) { C.LLVMPassManagerBuilderSetDisableUnrollLoops(pmb.C, boolToLLVMBool(val)) } func (pmb PassManagerBuilder) SetDisableSimplifyLibCalls(val bool) { C.LLVMPassManagerBuilderSetDisableSimplifyLibCalls(pmb.C, boolToLLVMBool(val)) } func (pmb PassManagerBuilder) UseInlinerWithThreshold(threshold uint) { C.LLVMPassManagerBuilderUseInlinerWithThreshold(pmb.C, C.uint(threshold)) } func (pmb PassManagerBuilder) AddCoroutinePassesToExtensionPoints() { C.LLVMPassManagerBuilderAddCoroutinePassesToExtensionPoints(pmb.C); }