PassManagerBuilder.h revision 360660
1/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
2|*                                                                            *|
3|* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
4|* Exceptions.                                                                *|
5|* See https://llvm.org/LICENSE.txt for license information.                  *|
6|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
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