1dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
2dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|*                                                                            *|
3dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|*                     The LLVM Compiler Infrastructure                       *|
4dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|*                                                                            *|
5dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* This file is distributed under the University of Illinois Open Source      *|
6dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* License. See LICENSE.TXT for details.                                      *|
7dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|*                                                                            *|
8dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|*===----------------------------------------------------------------------===*|
9dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|*                                                                            *|
10dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* This header declares the C interface to the PassManagerBuilder class.      *|
11dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|*                                                                            *|
12dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola\*===----------------------------------------------------------------------===*/
13dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
14674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
15674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
16dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
17dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola#include "llvm-c/Core.h"
18dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
19dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolatypedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
20dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
217d2166a643a7c16b9b0c87441b662f66e79b131fEvan Cheng#ifdef __cplusplus
22dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolaextern "C" {
23dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola#endif
24dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
256244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/**
266244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
276244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @ingroup LLVMCTransforms
286244b518880842f2c15200ee041e06799e4cc779Gregory Szorc *
296244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @{
306244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */
316244b518880842f2c15200ee041e06799e4cc779Gregory Szorc
32dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder. */
33dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
34dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
35dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
36dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::OptLevel. */
37dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid
38dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
39dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                  unsigned OptLevel);
40dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
41dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::SizeLevel. */
42dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid
43dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
44dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                   unsigned SizeLevel);
45dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
46dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::DisableUnitAtATime. */
47dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid
48dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
49dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                            LLVMBool Value);
50dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
51dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::DisableUnrollLoops. */
52dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid
53dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
54dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                            LLVMBool Value);
55dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
56dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
57dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid
58dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
59dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                                 LLVMBool Value);
60dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
61dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::Inliner. */
62dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid
63dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
64dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                              unsigned Threshold);
65dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
66dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::populateFunctionPassManager. */
67dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid
68dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
69dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                                  LLVMPassManagerRef PM);
70dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
71dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::populateModulePassManager. */
72dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid
73dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
74dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                                LLVMPassManagerRef PM);
75dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
76dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::populateLTOPassManager. */
77dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
78dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola                                                  LLVMPassManagerRef PM,
790ebc084132cbf4ebebdb6c931ef42f97e3ff5fe1Nick Lewycky                                                  LLVMBool Internalize,
800ebc084132cbf4ebebdb6c931ef42f97e3ff5fe1Nick Lewycky                                                  LLVMBool RunInliner);
81dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
826244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/**
836244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @}
846244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */
856244b518880842f2c15200ee041e06799e4cc779Gregory Szorc
86dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola#ifdef __cplusplus
87dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola}
889313da5a90838c7242101dae250e86dcfc708e6aEvan Cheng#endif
89dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola
90dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola#endif
91