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 14252723Sdim#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H 15252723Sdim#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 26235633Sdim/** 27235633Sdim * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder 28235633Sdim * @ingroup LLVMCTransforms 29235633Sdim * 30235633Sdim * @{ 31235633Sdim */ 32235633Sdim 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, 80252723Sdim LLVMBool Internalize, 81252723Sdim LLVMBool RunInliner); 82226584Sdim 83235633Sdim/** 84235633Sdim * @} 85235633Sdim */ 86235633Sdim 87226584Sdim#ifdef __cplusplus 88226584Sdim} 89226584Sdim#endif 90226584Sdim 91226584Sdim#endif 92