PassManagerBuilder.h revision 226633
1/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\ 2|* *| 3|* The LLVM Compiler Infrastructure *| 4|* *| 5|* This file is distributed under the University of Illinois Open Source *| 6|* License. See LICENSE.TXT for details. *| 7|* *| 8|*===----------------------------------------------------------------------===*| 9|* *| 10|* This header declares the C interface to the PassManagerBuilder class. *| 11|* *| 12\*===----------------------------------------------------------------------===*/ 13 14#ifndef LLVM_C_PASSMANAGERBUILDER 15#define LLVM_C_PASSMANAGERBUILDER 16 17#include "llvm-c/Core.h" 18 19typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef; 20 21#ifdef __cplusplus 22#include "llvm/Transforms/IPO/PassManagerBuilder.h" 23extern "C" { 24#endif 25 26/** See llvm::PassManagerBuilder. */ 27LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void); 28void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB); 29 30/** See llvm::PassManagerBuilder::OptLevel. */ 31void 32LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB, 33 unsigned OptLevel); 34 35/** See llvm::PassManagerBuilder::SizeLevel. */ 36void 37LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB, 38 unsigned SizeLevel); 39 40/** See llvm::PassManagerBuilder::DisableUnitAtATime. */ 41void 42LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB, 43 LLVMBool Value); 44 45/** See llvm::PassManagerBuilder::DisableUnrollLoops. */ 46void 47LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB, 48 LLVMBool Value); 49 50/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */ 51void 52LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB, 53 LLVMBool Value); 54 55/** See llvm::PassManagerBuilder::Inliner. */ 56void 57LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB, 58 unsigned Threshold); 59 60/** See llvm::PassManagerBuilder::populateFunctionPassManager. */ 61void 62LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, 63 LLVMPassManagerRef PM); 64 65/** See llvm::PassManagerBuilder::populateModulePassManager. */ 66void 67LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, 68 LLVMPassManagerRef PM); 69 70/** See llvm::PassManagerBuilder::populateLTOPassManager. */ 71void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, 72 LLVMPassManagerRef PM, 73 bool Internalize, 74 bool RunInliner); 75 76#ifdef __cplusplus 77} 78 79namespace llvm { 80 inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) { 81 return reinterpret_cast<PassManagerBuilder*>(P); 82 } 83 84 inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) { 85 return reinterpret_cast<LLVMPassManagerBuilderRef>(P); 86 } 87} 88#endif 89 90#endif 91