]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - bindings/go/llvm/transforms_pmbuilder.go
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / bindings / go / llvm / transforms_pmbuilder.go
1 //===- transforms_pmbuilder.go - Bindings for PassManagerBuilder ----------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file defines bindings for the PassManagerBuilder class.
11 //
12 //===----------------------------------------------------------------------===//
13
14 package llvm
15
16 /*
17 #include "llvm-c/Transforms/PassManagerBuilder.h"
18 */
19 import "C"
20
21 type PassManagerBuilder struct {
22         C C.LLVMPassManagerBuilderRef
23 }
24
25 func NewPassManagerBuilder() (pmb PassManagerBuilder) {
26         pmb.C = C.LLVMPassManagerBuilderCreate()
27         return
28 }
29
30 func (pmb PassManagerBuilder) SetOptLevel(level int) {
31         C.LLVMPassManagerBuilderSetOptLevel(pmb.C, C.uint(level))
32 }
33
34 func (pmb PassManagerBuilder) SetSizeLevel(level int) {
35         C.LLVMPassManagerBuilderSetSizeLevel(pmb.C, C.uint(level))
36 }
37
38 func (pmb PassManagerBuilder) Populate(pm PassManager) {
39         C.LLVMPassManagerBuilderPopulateModulePassManager(pmb.C, pm.C)
40 }
41
42 func (pmb PassManagerBuilder) PopulateFunc(pm PassManager) {
43         C.LLVMPassManagerBuilderPopulateFunctionPassManager(pmb.C, pm.C)
44 }
45
46 func (pmb PassManagerBuilder) PopulateLTOPassManager(pm PassManager, internalize bool, runInliner bool) {
47         C.LLVMPassManagerBuilderPopulateLTOPassManager(pmb.C, pm.C, boolToLLVMBool(internalize), boolToLLVMBool(runInliner))
48 }
49
50 func (pmb PassManagerBuilder) Dispose() {
51         C.LLVMPassManagerBuilderDispose(pmb.C)
52 }
53
54 func (pmb PassManagerBuilder) SetDisableUnitAtATime(val bool) {
55         C.LLVMPassManagerBuilderSetDisableUnitAtATime(pmb.C, boolToLLVMBool(val))
56 }
57
58 func (pmb PassManagerBuilder) SetDisableUnrollLoops(val bool) {
59         C.LLVMPassManagerBuilderSetDisableUnrollLoops(pmb.C, boolToLLVMBool(val))
60 }
61
62 func (pmb PassManagerBuilder) SetDisableSimplifyLibCalls(val bool) {
63         C.LLVMPassManagerBuilderSetDisableSimplifyLibCalls(pmb.C, boolToLLVMBool(val))
64 }
65
66 func (pmb PassManagerBuilder) UseInlinerWithThreshold(threshold uint) {
67         C.LLVMPassManagerBuilderUseInlinerWithThreshold(pmb.C, C.uint(threshold))
68 }