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
14252723Sdim#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
15252723Sdim#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
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
26235633Sdim/**
27235633Sdim * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
28235633Sdim * @ingroup LLVMCTransforms
29235633Sdim *
30235633Sdim * @{
31235633Sdim */
32235633Sdim
33226584Sdim/** See llvm::PassManagerBuilder. */
34226584SdimLLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
35226584Sdimvoid LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
36226584Sdim
37226584Sdim/** See llvm::PassManagerBuilder::OptLevel. */
38226584Sdimvoid
39226584SdimLLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
40226584Sdim                                  unsigned OptLevel);
41226584Sdim
42226584Sdim/** See llvm::PassManagerBuilder::SizeLevel. */
43226584Sdimvoid
44226584SdimLLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
45226584Sdim                                   unsigned SizeLevel);
46226584Sdim
47226584Sdim/** See llvm::PassManagerBuilder::DisableUnitAtATime. */
48226584Sdimvoid
49226584SdimLLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
50226584Sdim                                            LLVMBool Value);
51226584Sdim
52226584Sdim/** See llvm::PassManagerBuilder::DisableUnrollLoops. */
53226584Sdimvoid
54226584SdimLLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
55226584Sdim                                            LLVMBool Value);
56226584Sdim
57226584Sdim/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
58226584Sdimvoid
59226584SdimLLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
60226584Sdim                                                 LLVMBool Value);
61226584Sdim
62226584Sdim/** See llvm::PassManagerBuilder::Inliner. */
63226584Sdimvoid
64226584SdimLLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
65226584Sdim                                              unsigned Threshold);
66226584Sdim
67226584Sdim/** See llvm::PassManagerBuilder::populateFunctionPassManager. */
68226584Sdimvoid
69226584SdimLLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
70226584Sdim                                                  LLVMPassManagerRef PM);
71226584Sdim
72226584Sdim/** See llvm::PassManagerBuilder::populateModulePassManager. */
73226584Sdimvoid
74226584SdimLLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
75226584Sdim                                                LLVMPassManagerRef PM);
76226584Sdim
77226584Sdim/** See llvm::PassManagerBuilder::populateLTOPassManager. */
78226584Sdimvoid LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
79226584Sdim                                                  LLVMPassManagerRef PM,
80252723Sdim                                                  LLVMBool Internalize,
81252723Sdim                                                  LLVMBool RunInliner);
82226584Sdim
83235633Sdim/**
84235633Sdim * @}
85235633Sdim */
86235633Sdim
87226584Sdim#ifdef __cplusplus
88226584Sdim}
89226584Sdim#endif
90226584Sdim
91226584Sdim#endif
92