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_TRANSFORMS_PASSMANAGERBUILDER_H
15#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
16
17#include "llvm-c/Types.h"
18
19typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25/**
26 * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
27 * @ingroup LLVMCTransforms
28 *
29 * @{
30 */
31
32/** See llvm::PassManagerBuilder. */
33LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
34void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
35
36/** See llvm::PassManagerBuilder::OptLevel. */
37void
38LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
39 unsigned OptLevel);
40
41/** See llvm::PassManagerBuilder::SizeLevel. */
42void
43LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
44 unsigned SizeLevel);
45
46/** See llvm::PassManagerBuilder::DisableUnitAtATime. */
47void
48LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
49 LLVMBool Value);
50
51/** See llvm::PassManagerBuilder::DisableUnrollLoops. */
52void
53LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
54 LLVMBool Value);
55
56/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
57void
58LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
59 LLVMBool Value);
60
61/** See llvm::PassManagerBuilder::Inliner. */
62void
63LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
64 unsigned Threshold);
65
66/** See llvm::PassManagerBuilder::populateFunctionPassManager. */
67void
68LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
69 LLVMPassManagerRef PM);
70
71/** See llvm::PassManagerBuilder::populateModulePassManager. */
72void
73LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
74 LLVMPassManagerRef PM);
75
76/** See llvm::PassManagerBuilder::populateLTOPassManager. */
77void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
78 LLVMPassManagerRef PM,
79 LLVMBool Internalize,
80 LLVMBool RunInliner);
81
82/**
83 * @}
84 */
85
86#ifdef __cplusplus
87}
88#endif
89
90#endif
91