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