1 #include "core.h"
2 #include "llvm-c/Transforms/PassManagerBuilder.h"
3 #include "llvm-c/Target.h"
4 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
5
6
7 extern "C" {
8
9 namespace llvm {
unwrap(LLVMPassManagerBuilderRef P)10 inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) {
11 return reinterpret_cast<PassManagerBuilder*>(P);
12 }
13
wrap(PassManagerBuilder * P)14 inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) {
15 return reinterpret_cast<LLVMPassManagerBuilderRef>(P);
16 }
17 }
18
19
20 API_EXPORT(LLVMPassManagerBuilderRef)
LLVMPY_PassManagerBuilderCreate()21 LLVMPY_PassManagerBuilderCreate()
22 {
23 return LLVMPassManagerBuilderCreate();
24 }
25
26 API_EXPORT(void)
LLVMPY_PassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB)27 LLVMPY_PassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB)
28 {
29 LLVMPassManagerBuilderDispose(PMB);
30 }
31
32 API_EXPORT(void)
LLVMPY_PassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,LLVMPassManagerRef PM)33 LLVMPY_PassManagerBuilderPopulateModulePassManager(
34 LLVMPassManagerBuilderRef PMB,
35 LLVMPassManagerRef PM)
36 {
37 LLVMPassManagerBuilderPopulateModulePassManager(PMB, PM);
38 }
39
40 API_EXPORT(unsigned)
LLVMPY_PassManagerBuilderGetOptLevel(LLVMPassManagerBuilderRef PMB)41 LLVMPY_PassManagerBuilderGetOptLevel(LLVMPassManagerBuilderRef PMB)
42 {
43 llvm::PassManagerBuilder *pmb = llvm::unwrap(PMB);
44 return pmb->OptLevel;
45 }
46
47 API_EXPORT(void)
LLVMPY_PassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,unsigned OptLevel)48 LLVMPY_PassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
49 unsigned OptLevel)
50 {
51 LLVMPassManagerBuilderSetOptLevel(PMB, OptLevel);
52 }
53
54 API_EXPORT(unsigned)
LLVMPY_PassManagerBuilderGetSizeLevel(LLVMPassManagerBuilderRef PMB)55 LLVMPY_PassManagerBuilderGetSizeLevel(LLVMPassManagerBuilderRef PMB)
56 {
57 llvm::PassManagerBuilder *pmb = llvm::unwrap(PMB);
58 return pmb->SizeLevel;
59 }
60
61 API_EXPORT(void)
LLVMPY_PassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,unsigned SizeLevel)62 LLVMPY_PassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
63 unsigned SizeLevel)
64 {
65 LLVMPassManagerBuilderSetSizeLevel(PMB, SizeLevel);
66 }
67
68 API_EXPORT(int)
LLVMPY_PassManagerBuilderGetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB)69 LLVMPY_PassManagerBuilderGetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB)
70 {
71 llvm::PassManagerBuilder *pmb = llvm::unwrap(PMB);
72 return pmb->DisableUnrollLoops;
73 }
74
75 API_EXPORT(void)
LLVMPY_PassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,LLVMBool Value)76 LLVMPY_PassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
77 LLVMBool Value)
78 {
79 LLVMPassManagerBuilderSetDisableUnrollLoops(PMB, Value);
80 }
81
82 API_EXPORT(void)
LLVMPY_PassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,unsigned Threshold)83 LLVMPY_PassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
84 unsigned Threshold)
85 {
86 LLVMPassManagerBuilderUseInlinerWithThreshold(PMB, Threshold);
87 }
88
89 API_EXPORT(void)
LLVMPY_PassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,LLVMPassManagerRef PM)90 LLVMPY_PassManagerBuilderPopulateFunctionPassManager(
91 LLVMPassManagerBuilderRef PMB,
92 LLVMPassManagerRef PM)
93 {
94 LLVMPassManagerBuilderPopulateFunctionPassManager(PMB, PM);
95 }
96
97
98 API_EXPORT(void)
LLVMPY_PassManagerBuilderSetLoopVectorize(LLVMPassManagerBuilderRef PMB,int Value)99 LLVMPY_PassManagerBuilderSetLoopVectorize(LLVMPassManagerBuilderRef PMB,
100 int Value)
101 {
102 llvm::PassManagerBuilder *pmb = llvm::unwrap(PMB);
103 pmb->LoopVectorize = Value;
104 }
105
106 API_EXPORT(int)
LLVMPY_PassManagerBuilderGetLoopVectorize(LLVMPassManagerBuilderRef PMB)107 LLVMPY_PassManagerBuilderGetLoopVectorize(LLVMPassManagerBuilderRef PMB)
108 {
109 llvm::PassManagerBuilder *pmb = llvm::unwrap(PMB);
110 return pmb->LoopVectorize;
111 }
112
113
114 API_EXPORT(void)
LLVMPY_PassManagerBuilderSetSLPVectorize(LLVMPassManagerBuilderRef PMB,int Value)115 LLVMPY_PassManagerBuilderSetSLPVectorize(LLVMPassManagerBuilderRef PMB,
116 int Value)
117 {
118 llvm::PassManagerBuilder *pmb = llvm::unwrap(PMB);
119 pmb->SLPVectorize = Value;
120 }
121
122 API_EXPORT(int)
LLVMPY_PassManagerBuilderGetSLPVectorize(LLVMPassManagerBuilderRef PMB)123 LLVMPY_PassManagerBuilderGetSLPVectorize(LLVMPassManagerBuilderRef PMB)
124 {
125 llvm::PassManagerBuilder *pmb = llvm::unwrap(PMB);
126 return pmb->SLPVectorize;
127 }
128
129
130 } // end extern "C"
131