1226584Sdim/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\ 2226584Sdim|* *| 3353358Sdim|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| 4353358Sdim|* Exceptions. *| 5353358Sdim|* See https://llvm.org/LICENSE.txt for license information. *| 6353358Sdim|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| 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 17360784Sdim#include "llvm-c/ExternC.h" 18296417Sdim#include "llvm-c/Types.h" 19226584Sdim 20226584Sdimtypedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef; 21226584Sdim 22360784SdimLLVM_C_EXTERN_C_BEGIN 23226584Sdim 24234353Sdim/** 25234353Sdim * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder 26234353Sdim * @ingroup LLVMCTransforms 27234353Sdim * 28234353Sdim * @{ 29234353Sdim */ 30234353Sdim 31226584Sdim/** See llvm::PassManagerBuilder. */ 32226584SdimLLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void); 33226584Sdimvoid LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB); 34226584Sdim 35226584Sdim/** See llvm::PassManagerBuilder::OptLevel. */ 36226584Sdimvoid 37226584SdimLLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB, 38226584Sdim unsigned OptLevel); 39226584Sdim 40226584Sdim/** See llvm::PassManagerBuilder::SizeLevel. */ 41226584Sdimvoid 42226584SdimLLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB, 43226584Sdim unsigned SizeLevel); 44226584Sdim 45226584Sdim/** See llvm::PassManagerBuilder::DisableUnitAtATime. */ 46226584Sdimvoid 47226584SdimLLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB, 48226584Sdim LLVMBool Value); 49226584Sdim 50226584Sdim/** See llvm::PassManagerBuilder::DisableUnrollLoops. */ 51226584Sdimvoid 52226584SdimLLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB, 53226584Sdim LLVMBool Value); 54226584Sdim 55226584Sdim/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */ 56226584Sdimvoid 57226584SdimLLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB, 58226584Sdim LLVMBool Value); 59226584Sdim 60226584Sdim/** See llvm::PassManagerBuilder::Inliner. */ 61226584Sdimvoid 62226584SdimLLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB, 63226584Sdim unsigned Threshold); 64226584Sdim 65226584Sdim/** See llvm::PassManagerBuilder::populateFunctionPassManager. */ 66226584Sdimvoid 67226584SdimLLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, 68226584Sdim LLVMPassManagerRef PM); 69226584Sdim 70226584Sdim/** See llvm::PassManagerBuilder::populateModulePassManager. */ 71226584Sdimvoid 72226584SdimLLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, 73226584Sdim LLVMPassManagerRef PM); 74226584Sdim 75226584Sdim/** See llvm::PassManagerBuilder::populateLTOPassManager. */ 76226584Sdimvoid LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, 77226584Sdim LLVMPassManagerRef PM, 78249423Sdim LLVMBool Internalize, 79249423Sdim LLVMBool RunInliner); 80226584Sdim 81234353Sdim/** 82234353Sdim * @} 83234353Sdim */ 84234353Sdim 85360784SdimLLVM_C_EXTERN_C_END 86226584Sdim 87226584Sdim#endif 88