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