PassManagerBuilder.h revision 249423
1226584Sdim/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\ 2226584Sdim|* *| 3226584Sdim|* The LLVM Compiler Infrastructure *| 4226584Sdim|* *| 5226584Sdim|* This file is distributed under the University of Illinois Open Source *| 6226584Sdim|* License. See LICENSE.TXT for details. *| 7226584Sdim|* *| 8226584Sdim|*===----------------------------------------------------------------------===*| 9226584Sdim|* *| 10226584Sdim|* This header declares the C interface to the PassManagerBuilder class. *| 11226584Sdim|* *| 12226584Sdim\*===----------------------------------------------------------------------===*/ 13226584Sdim 14249423Sdim#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H 15249423Sdim#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H 16226584Sdim 17226584Sdim#include "llvm-c/Core.h" 18226584Sdim 19226584Sdimtypedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef; 20226584Sdim 21226584Sdim#ifdef __cplusplus 22226584Sdim#include "llvm/Transforms/IPO/PassManagerBuilder.h" 23226584Sdimextern "C" { 24226584Sdim#endif 25226584Sdim 26234353Sdim/** 27234353Sdim * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder 28234353Sdim * @ingroup LLVMCTransforms 29234353Sdim * 30234353Sdim * @{ 31234353Sdim */ 32234353Sdim 33226584Sdim/** See llvm::PassManagerBuilder. */ 34226584SdimLLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void); 35226584Sdimvoid LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB); 36226584Sdim 37226584Sdim/** See llvm::PassManagerBuilder::OptLevel. */ 38226584Sdimvoid 39226584SdimLLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB, 40226584Sdim unsigned OptLevel); 41226584Sdim 42226584Sdim/** See llvm::PassManagerBuilder::SizeLevel. */ 43226584Sdimvoid 44226584SdimLLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB, 45226584Sdim unsigned SizeLevel); 46226584Sdim 47226584Sdim/** See llvm::PassManagerBuilder::DisableUnitAtATime. */ 48226584Sdimvoid 49226584SdimLLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB, 50226584Sdim LLVMBool Value); 51226584Sdim 52226584Sdim/** See llvm::PassManagerBuilder::DisableUnrollLoops. */ 53226584Sdimvoid 54226584SdimLLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB, 55226584Sdim LLVMBool Value); 56226584Sdim 57226584Sdim/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */ 58226584Sdimvoid 59226584SdimLLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB, 60226584Sdim LLVMBool Value); 61226584Sdim 62226584Sdim/** See llvm::PassManagerBuilder::Inliner. */ 63226584Sdimvoid 64226584SdimLLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB, 65226584Sdim unsigned Threshold); 66226584Sdim 67226584Sdim/** See llvm::PassManagerBuilder::populateFunctionPassManager. */ 68226584Sdimvoid 69226584SdimLLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, 70226584Sdim LLVMPassManagerRef PM); 71226584Sdim 72226584Sdim/** See llvm::PassManagerBuilder::populateModulePassManager. */ 73226584Sdimvoid 74226584SdimLLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, 75226584Sdim LLVMPassManagerRef PM); 76226584Sdim 77226584Sdim/** See llvm::PassManagerBuilder::populateLTOPassManager. */ 78226584Sdimvoid LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, 79226584Sdim LLVMPassManagerRef PM, 80249423Sdim LLVMBool Internalize, 81249423Sdim LLVMBool RunInliner); 82226584Sdim 83234353Sdim/** 84234353Sdim * @} 85234353Sdim */ 86234353Sdim 87226584Sdim#ifdef __cplusplus 88226584Sdim} 89226584Sdim 90226584Sdimnamespace llvm { 91226584Sdim inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) { 92226584Sdim return reinterpret_cast<PassManagerBuilder*>(P); 93226584Sdim } 94226584Sdim 95226584Sdim inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) { 96226584Sdim return reinterpret_cast<LLVMPassManagerBuilderRef>(P); 97226584Sdim } 98226584Sdim} 99226584Sdim#endif 100226584Sdim 101226584Sdim#endif 102