PassManagerBuilder.h revision 226584
1226584Sdim/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
2226584Sdim|*                                                                            *|
3226584Sdim|*                     The LLVM Compiler Infrastructure                       *|
4226584Sdim|*                                                                            *|
5226584Sdim|* This file is distributed under the University of Illinois Open Source      *|
6226584Sdim|* License. See LICENSE.TXT for details.                                      *|
7226584Sdim|*                                                                            *|
8226584Sdim|*===----------------------------------------------------------------------===*|
9226584Sdim|*                                                                            *|
10226584Sdim|* This header declares the C interface to the PassManagerBuilder class.      *|
11226584Sdim|*                                                                            *|
12226584Sdim\*===----------------------------------------------------------------------===*/
13226584Sdim
14226584Sdim#ifndef LLVM_C_PASSMANAGERBUILDER
15226584Sdim#define LLVM_C_PASSMANAGERBUILDER
16226584Sdim
17226584Sdim#include "llvm-c/Core.h"
18226584Sdim
19226584Sdimtypedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
20226584Sdim
21226584Sdim#ifdef __cplusplus
22226584Sdim#include "llvm/Transforms/IPO/PassManagerBuilder.h"
23226584Sdimextern "C" {
24226584Sdim#endif
25226584Sdim
26226584Sdim/** See llvm::PassManagerBuilder. */
27226584SdimLLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
28226584Sdimvoid LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
29226584Sdim
30226584Sdim/** See llvm::PassManagerBuilder::OptLevel. */
31226584Sdimvoid
32226584SdimLLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
33226584Sdim                                  unsigned OptLevel);
34226584Sdim
35226584Sdim/** See llvm::PassManagerBuilder::SizeLevel. */
36226584Sdimvoid
37226584SdimLLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
38226584Sdim                                   unsigned SizeLevel);
39226584Sdim
40226584Sdim/** See llvm::PassManagerBuilder::DisableUnitAtATime. */
41226584Sdimvoid
42226584SdimLLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
43226584Sdim                                            LLVMBool Value);
44226584Sdim
45226584Sdim/** See llvm::PassManagerBuilder::DisableUnrollLoops. */
46226584Sdimvoid
47226584SdimLLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
48226584Sdim                                            LLVMBool Value);
49226584Sdim
50226584Sdim/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
51226584Sdimvoid
52226584SdimLLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
53226584Sdim                                                 LLVMBool Value);
54226584Sdim
55226584Sdim/** See llvm::PassManagerBuilder::Inliner. */
56226584Sdimvoid
57226584SdimLLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
58226584Sdim                                              unsigned Threshold);
59226584Sdim
60226584Sdim/** See llvm::PassManagerBuilder::populateFunctionPassManager. */
61226584Sdimvoid
62226584SdimLLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
63226584Sdim                                                  LLVMPassManagerRef PM);
64226584Sdim
65226584Sdim/** See llvm::PassManagerBuilder::populateModulePassManager. */
66226584Sdimvoid
67226584SdimLLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
68226584Sdim                                                LLVMPassManagerRef PM);
69226584Sdim
70226584Sdim/** See llvm::PassManagerBuilder::populateLTOPassManager. */
71226584Sdimvoid LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
72226584Sdim                                                  LLVMPassManagerRef PM,
73226584Sdim                                                  bool Internalize,
74226584Sdim                                                  bool RunInliner);
75226584Sdim
76226584Sdim#ifdef __cplusplus
77226584Sdim}
78226584Sdim
79226584Sdimnamespace llvm {
80226584Sdim  inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) {
81226584Sdim    return reinterpret_cast<PassManagerBuilder*>(P);
82226584Sdim  }
83226584Sdim
84226584Sdim  inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) {
85226584Sdim    return reinterpret_cast<LLVMPassManagerBuilderRef>(P);
86226584Sdim  }
87226584Sdim}
88226584Sdim#endif
89226584Sdim
90226584Sdim#endif
91