1226584Sdim/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
2226584Sdim|*                                                                            *|
3353358Sdim|* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
4353358Sdim|* Exceptions.                                                                *|
5353358Sdim|* See https://llvm.org/LICENSE.txt for license information.                  *|
6353358Sdim|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
7226584Sdim|*                                                                            *|
8226584Sdim|*===----------------------------------------------------------------------===*|
9226584Sdim|*                                                                            *|
10226584Sdim|* This header declares the C interface to the PassManagerBuilder class.      *|
11226584Sdim|*                                                                            *|
12226584Sdim\*===----------------------------------------------------------------------===*/
13226584Sdim
14249423Sdim#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
15249423Sdim#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
16226584Sdim
17360784Sdim#include "llvm-c/ExternC.h"
18296417Sdim#include "llvm-c/Types.h"
19226584Sdim
20226584Sdimtypedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
21226584Sdim
22360784SdimLLVM_C_EXTERN_C_BEGIN
23226584Sdim
24234353Sdim/**
25234353Sdim * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
26234353Sdim * @ingroup LLVMCTransforms
27234353Sdim *
28234353Sdim * @{
29234353Sdim */
30234353Sdim
31226584Sdim/** See llvm::PassManagerBuilder. */
32226584SdimLLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
33226584Sdimvoid LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
34226584Sdim
35226584Sdim/** See llvm::PassManagerBuilder::OptLevel. */
36226584Sdimvoid
37226584SdimLLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
38226584Sdim                                  unsigned OptLevel);
39226584Sdim
40226584Sdim/** See llvm::PassManagerBuilder::SizeLevel. */
41226584Sdimvoid
42226584SdimLLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
43226584Sdim                                   unsigned SizeLevel);
44226584Sdim
45226584Sdim/** See llvm::PassManagerBuilder::DisableUnitAtATime. */
46226584Sdimvoid
47226584SdimLLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
48226584Sdim                                            LLVMBool Value);
49226584Sdim
50226584Sdim/** See llvm::PassManagerBuilder::DisableUnrollLoops. */
51226584Sdimvoid
52226584SdimLLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
53226584Sdim                                            LLVMBool Value);
54226584Sdim
55226584Sdim/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
56226584Sdimvoid
57226584SdimLLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
58226584Sdim                                                 LLVMBool Value);
59226584Sdim
60226584Sdim/** See llvm::PassManagerBuilder::Inliner. */
61226584Sdimvoid
62226584SdimLLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
63226584Sdim                                              unsigned Threshold);
64226584Sdim
65226584Sdim/** See llvm::PassManagerBuilder::populateFunctionPassManager. */
66226584Sdimvoid
67226584SdimLLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
68226584Sdim                                                  LLVMPassManagerRef PM);
69226584Sdim
70226584Sdim/** See llvm::PassManagerBuilder::populateModulePassManager. */
71226584Sdimvoid
72226584SdimLLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
73226584Sdim                                                LLVMPassManagerRef PM);
74226584Sdim
75226584Sdim/** See llvm::PassManagerBuilder::populateLTOPassManager. */
76226584Sdimvoid LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
77226584Sdim                                                  LLVMPassManagerRef PM,
78249423Sdim                                                  LLVMBool Internalize,
79249423Sdim                                                  LLVMBool RunInliner);
80226584Sdim
81234353Sdim/**
82234353Sdim * @}
83234353Sdim */
84234353Sdim
85360784SdimLLVM_C_EXTERN_C_END
86226584Sdim
87226584Sdim#endif
88