1 /*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
2 |*                                                                            *|
3 |*                     The LLVM Compiler Infrastructure                       *|
4 |*                                                                            *|
5 |* This file is distributed under the University of Illinois Open Source      *|
6 |* License. See LICENSE.TXT for details.                                      *|
7 |*                                                                            *|
8 |*===----------------------------------------------------------------------===*|
9 |*                                                                            *|
10 |* This header declares the C interface to the PassManagerBuilder class.      *|
11 |*                                                                            *|
12 \*===----------------------------------------------------------------------===*/
13 
14 module llvm.c.transforms.passManagerBuilder;
15 
16 public import llvm.c.types;
17 
18 extern(C) nothrow:
19 
20 struct __LLVMOpaquePassManagerBuilder {};
21 alias __LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
22 
23 /**
24  * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
25  * @ingroup LLVMCTransforms
26  *
27  * @{
28  */
29 
30 /** See llvm::PassManagerBuilder. */
31 LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate();
32 void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
33 
34 /** See llvm::PassManagerBuilder::OptLevel. */
35 void
36 LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
37                                   uint OptLevel);
38 
39 /** See llvm::PassManagerBuilder::SizeLevel. */
40 void
41 LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
42                                    uint SizeLevel);
43 
44 /** See llvm::PassManagerBuilder::DisableUnitAtATime. */
45 void
46 LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
47                                             LLVMBool Value);
48 
49 /** See llvm::PassManagerBuilder::DisableUnrollLoops. */
50 void
51 LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
52                                             LLVMBool Value);
53 
54 /** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
55 void
56 LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
57                                                  LLVMBool Value);
58 
59 /** See llvm::PassManagerBuilder::Inliner. */
60 void
61 LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
62                                               uint Threshold);
63 
64 /** See llvm::PassManagerBuilder::populateFunctionPassManager. */
65 void
66 LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
67                                                   LLVMPassManagerRef PM);
68 
69 /** See llvm::PassManagerBuilder::populateModulePassManager. */
70 void
71 LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
72                                                 LLVMPassManagerRef PM);
73 
74 /** See llvm::PassManagerBuilder::populateLTOPassManager. */
75 void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
76                                                   LLVMPassManagerRef PM,
77                                                   LLVMBool Internalize,
78                                                   LLVMBool RunInliner);
79 
80 /**
81  * @}
82  */