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