| /*===-- 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 | |
| /** 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 |