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