blob: 6e13e18e063beb1a398e1afafed1e19f219a53cd [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
2|* *|
Andrew Walbran16937d02019-10-22 13:54:20 +01003|* 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 *|
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01007|* *|
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
Olivier Deprezf4ef2d02021-04-20 13:36:24 +020017#include "llvm-c/ExternC.h"
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010018#include "llvm-c/Types.h"
19
20typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
21
Olivier Deprezf4ef2d02021-04-20 13:36:24 +020022LLVM_C_EXTERN_C_BEGIN
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010023
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
Olivier Deprezf4ef2d02021-04-20 13:36:24 +020085LLVM_C_EXTERN_C_END
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010086
87#endif