1//===- transforms_pmbuilder.go - Bindings for PassManagerBuilder ----------===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file defines bindings for the PassManagerBuilder class. 10// 11//===----------------------------------------------------------------------===// 12 13package llvm 14 15/* 16#include "llvm-c/Transforms/PassManagerBuilder.h" 17#include "llvm-c/Transforms/Coroutines.h" 18*/ 19import "C" 20 21type PassManagerBuilder struct { 22 C C.LLVMPassManagerBuilderRef 23} 24 25func NewPassManagerBuilder() (pmb PassManagerBuilder) { 26 pmb.C = C.LLVMPassManagerBuilderCreate() 27 return 28} 29 30func (pmb PassManagerBuilder) SetOptLevel(level int) { 31 C.LLVMPassManagerBuilderSetOptLevel(pmb.C, C.uint(level)) 32} 33 34func (pmb PassManagerBuilder) SetSizeLevel(level int) { 35 C.LLVMPassManagerBuilderSetSizeLevel(pmb.C, C.uint(level)) 36} 37 38func (pmb PassManagerBuilder) Populate(pm PassManager) { 39 C.LLVMPassManagerBuilderPopulateModulePassManager(pmb.C, pm.C) 40} 41 42func (pmb PassManagerBuilder) PopulateFunc(pm PassManager) { 43 C.LLVMPassManagerBuilderPopulateFunctionPassManager(pmb.C, pm.C) 44} 45 46func (pmb PassManagerBuilder) PopulateLTOPassManager(pm PassManager, internalize bool, runInliner bool) { 47 C.LLVMPassManagerBuilderPopulateLTOPassManager(pmb.C, pm.C, boolToLLVMBool(internalize), boolToLLVMBool(runInliner)) 48} 49 50func (pmb PassManagerBuilder) Dispose() { 51 C.LLVMPassManagerBuilderDispose(pmb.C) 52} 53 54func (pmb PassManagerBuilder) SetDisableUnitAtATime(val bool) { 55 C.LLVMPassManagerBuilderSetDisableUnitAtATime(pmb.C, boolToLLVMBool(val)) 56} 57 58func (pmb PassManagerBuilder) SetDisableUnrollLoops(val bool) { 59 C.LLVMPassManagerBuilderSetDisableUnrollLoops(pmb.C, boolToLLVMBool(val)) 60} 61 62func (pmb PassManagerBuilder) SetDisableSimplifyLibCalls(val bool) { 63 C.LLVMPassManagerBuilderSetDisableSimplifyLibCalls(pmb.C, boolToLLVMBool(val)) 64} 65 66func (pmb PassManagerBuilder) UseInlinerWithThreshold(threshold uint) { 67 C.LLVMPassManagerBuilderUseInlinerWithThreshold(pmb.C, C.uint(threshold)) 68} 69 70func (pmb PassManagerBuilder) AddCoroutinePassesToExtensionPoints() { 71 C.LLVMPassManagerBuilderAddCoroutinePassesToExtensionPoints(pmb.C); 72} 73