]> CyberLeo.Net >> Repos - FreeBSD/releng/9.0.git/blob - contrib/llvm/include/llvm-c/Transforms/PassManagerBuilder.h
Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
[FreeBSD/releng/9.0.git] / contrib / llvm / include / llvm-c / Transforms / PassManagerBuilder.h
1 /*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
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 header declares the C interface to the PassManagerBuilder class.      *|
11 |*                                                                            *|
12 \*===----------------------------------------------------------------------===*/
13
14 #ifndef LLVM_C_PASSMANAGERBUILDER
15 #define LLVM_C_PASSMANAGERBUILDER
16
17 #include "llvm-c/Core.h"
18
19 typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
20
21 #ifdef __cplusplus
22 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
23 extern "C" {
24 #endif
25
26 /** See llvm::PassManagerBuilder. */
27 LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
28 void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
29
30 /** See llvm::PassManagerBuilder::OptLevel. */
31 void
32 LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
33                                   unsigned OptLevel);
34
35 /** See llvm::PassManagerBuilder::SizeLevel. */
36 void
37 LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
38                                    unsigned SizeLevel);
39
40 /** See llvm::PassManagerBuilder::DisableUnitAtATime. */
41 void
42 LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
43                                             LLVMBool Value);
44
45 /** See llvm::PassManagerBuilder::DisableUnrollLoops. */
46 void
47 LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
48                                             LLVMBool Value);
49
50 /** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
51 void
52 LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
53                                                  LLVMBool Value);
54
55 /** See llvm::PassManagerBuilder::Inliner. */
56 void
57 LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
58                                               unsigned Threshold);
59
60 /** See llvm::PassManagerBuilder::populateFunctionPassManager. */
61 void
62 LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
63                                                   LLVMPassManagerRef PM);
64
65 /** See llvm::PassManagerBuilder::populateModulePassManager. */
66 void
67 LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
68                                                 LLVMPassManagerRef PM);
69
70 /** See llvm::PassManagerBuilder::populateLTOPassManager. */
71 void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
72                                                   LLVMPassManagerRef PM,
73                                                   bool Internalize,
74                                                   bool RunInliner);
75
76 #ifdef __cplusplus
77 }
78
79 namespace llvm {
80   inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) {
81     return reinterpret_cast<PassManagerBuilder*>(P);
82   }
83
84   inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) {
85     return reinterpret_cast<LLVMPassManagerBuilderRef>(P);
86   }
87 }
88 #endif
89
90 #endif