blob: d164c00d49c50b7b333df825b6737d443284cec4 [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
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