PassManagerBuilder.h revision 226584
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 14226584Sdim#ifndef LLVM_C_PASSMANAGERBUILDER 15226584Sdim#define LLVM_C_PASSMANAGERBUILDER 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 26226584Sdim/** See llvm::PassManagerBuilder. */ 27226584SdimLLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void); 28226584Sdimvoid LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB); 29226584Sdim 30226584Sdim/** See llvm::PassManagerBuilder::OptLevel. */ 31226584Sdimvoid 32226584SdimLLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB, 33226584Sdim unsigned OptLevel); 34226584Sdim 35226584Sdim/** See llvm::PassManagerBuilder::SizeLevel. */ 36226584Sdimvoid 37226584SdimLLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB, 38226584Sdim unsigned SizeLevel); 39226584Sdim 40226584Sdim/** See llvm::PassManagerBuilder::DisableUnitAtATime. */ 41226584Sdimvoid 42226584SdimLLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB, 43226584Sdim LLVMBool Value); 44226584Sdim 45226584Sdim/** See llvm::PassManagerBuilder::DisableUnrollLoops. */ 46226584Sdimvoid 47226584SdimLLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB, 48226584Sdim LLVMBool Value); 49226584Sdim 50226584Sdim/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */ 51226584Sdimvoid 52226584SdimLLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB, 53226584Sdim LLVMBool Value); 54226584Sdim 55226584Sdim/** See llvm::PassManagerBuilder::Inliner. */ 56226584Sdimvoid 57226584SdimLLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB, 58226584Sdim unsigned Threshold); 59226584Sdim 60226584Sdim/** See llvm::PassManagerBuilder::populateFunctionPassManager. */ 61226584Sdimvoid 62226584SdimLLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, 63226584Sdim LLVMPassManagerRef PM); 64226584Sdim 65226584Sdim/** See llvm::PassManagerBuilder::populateModulePassManager. */ 66226584Sdimvoid 67226584SdimLLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, 68226584Sdim LLVMPassManagerRef PM); 69226584Sdim 70226584Sdim/** See llvm::PassManagerBuilder::populateLTOPassManager. */ 71226584Sdimvoid LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, 72226584Sdim LLVMPassManagerRef PM, 73226584Sdim bool Internalize, 74226584Sdim bool RunInliner); 75226584Sdim 76226584Sdim#ifdef __cplusplus 77226584Sdim} 78226584Sdim 79226584Sdimnamespace llvm { 80226584Sdim inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) { 81226584Sdim return reinterpret_cast<PassManagerBuilder*>(P); 82226584Sdim } 83226584Sdim 84226584Sdim inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) { 85226584Sdim return reinterpret_cast<LLVMPassManagerBuilderRef>(P); 86226584Sdim } 87226584Sdim} 88226584Sdim#endif 89226584Sdim 90226584Sdim#endif 91