/*===-- 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_PASSMANAGERBUILDER #define LLVM_C_PASSMANAGERBUILDER #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, bool Internalize, bool 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