| /*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\ |
| |* *| |
| |* The LLVM Compiler Infrastructure *| |
| |* *| |
| |* This file is distributed under the University of Illinois Open Source *| |
| |* License. See LICENSE.TXT for details. *| |
| |* *| |
| |*===----------------------------------------------------------------------===*| |
| |* *| |
| |* This header declares the C interface to the PassManagerBuilder class. *| |
| |* *| |
| \*===----------------------------------------------------------------------===*/ |
| |
| #ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H |
| #define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H |
| |
| #include "llvm-c/Core.h" |
| |
| typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef; |
| |
| #ifdef __cplusplus |
| #include "llvm/Transforms/IPO/PassManagerBuilder.h" |
| extern "C" { |
| #endif |
| |
| /** |
| * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder |
| * @ingroup LLVMCTransforms |
| * |
| * @{ |
| */ |
| |
| /** See llvm::PassManagerBuilder. */ |
| LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void); |
| void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB); |
| |
| /** See llvm::PassManagerBuilder::OptLevel. */ |
| void |
| LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB, |
| unsigned OptLevel); |
| |
| /** See llvm::PassManagerBuilder::SizeLevel. */ |
| void |
| LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB, |
| unsigned SizeLevel); |
| |
| /** See llvm::PassManagerBuilder::DisableUnitAtATime. */ |
| void |
| LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB, |
| LLVMBool Value); |
| |
| /** See llvm::PassManagerBuilder::DisableUnrollLoops. */ |
| void |
| LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB, |
| LLVMBool Value); |
| |
| /** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */ |
| void |
| LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB, |
| LLVMBool Value); |
| |
| /** See llvm::PassManagerBuilder::Inliner. */ |
| void |
| LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB, |
| unsigned Threshold); |
| |
| /** See llvm::PassManagerBuilder::populateFunctionPassManager. */ |
| void |
| LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, |
| LLVMPassManagerRef PM); |
| |
| /** See llvm::PassManagerBuilder::populateModulePassManager. */ |
| void |
| LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, |
| LLVMPassManagerRef PM); |
| |
| /** See llvm::PassManagerBuilder::populateLTOPassManager. */ |
| void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, |
| LLVMPassManagerRef PM, |
| LLVMBool Internalize, |
| LLVMBool RunInliner); |
| |
| /** |
| * @} |
| */ |
| |
| #ifdef __cplusplus |
| } |
| |
| namespace llvm { |
| inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) { |
| return reinterpret_cast<PassManagerBuilder*>(P); |
| } |
| |
| inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) { |
| return reinterpret_cast<LLVMPassManagerBuilderRef>(P); |
| } |
| } |
| #endif |
| |
| #endif |