1dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\ 2dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* *| 3dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* The LLVM Compiler Infrastructure *| 4dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* *| 5dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* This file is distributed under the University of Illinois Open Source *| 6dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* License. See LICENSE.TXT for details. *| 7dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* *| 8dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|*===----------------------------------------------------------------------===*| 9dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* *| 10dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* This header declares the C interface to the PassManagerBuilder class. *| 11dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola|* *| 12dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola\*===----------------------------------------------------------------------===*/ 13dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 14674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H 15674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H 16dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 17f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#include "llvm-c/Types.h" 18dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 19dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolatypedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef; 20dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 217d2166a643a7c16b9b0c87441b662f66e79b131fEvan Cheng#ifdef __cplusplus 22dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolaextern "C" { 23dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola#endif 24dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 256244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/** 266244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder 276244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @ingroup LLVMCTransforms 286244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * 296244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @{ 306244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */ 316244b518880842f2c15200ee041e06799e4cc779Gregory Szorc 32dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder. */ 33dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void); 34dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB); 35dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 36dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::OptLevel. */ 37dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid 38dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB, 39dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola unsigned OptLevel); 40dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 41dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::SizeLevel. */ 42dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid 43dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB, 44dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola unsigned SizeLevel); 45dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 46dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::DisableUnitAtATime. */ 47dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid 48dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB, 49dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola LLVMBool Value); 50dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 51dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::DisableUnrollLoops. */ 52dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid 53dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB, 54dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola LLVMBool Value); 55dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 56dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */ 57dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid 58dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB, 59dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola LLVMBool Value); 60dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 61dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::Inliner. */ 62dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid 63dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB, 64dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola unsigned Threshold); 65dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 66dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::populateFunctionPassManager. */ 67dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid 68dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, 69dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola LLVMPassManagerRef PM); 70dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 71dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::populateModulePassManager. */ 72dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid 73dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael EspindolaLLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, 74dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola LLVMPassManagerRef PM); 75dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 76dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola/** See llvm::PassManagerBuilder::populateLTOPassManager. */ 77dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindolavoid LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, 78dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola LLVMPassManagerRef PM, 790ebc084132cbf4ebebdb6c931ef42f97e3ff5fe1Nick Lewycky LLVMBool Internalize, 800ebc084132cbf4ebebdb6c931ef42f97e3ff5fe1Nick Lewycky LLVMBool RunInliner); 81dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 826244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/** 836244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @} 846244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */ 856244b518880842f2c15200ee041e06799e4cc779Gregory Szorc 86dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola#ifdef __cplusplus 87dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola} 889313da5a90838c7242101dae250e86dcfc708e6aEvan Cheng#endif 89dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola 90dd3d68f7a9812089b4f088e167bb5019b6610d4fRafael Espindola#endif 91