LLVM API Documentation

c/Transforms/PassManagerBuilder.h
Go to the documentation of this file.
00001 /*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\
00002 |*                                                                            *|
00003 |*                     The LLVM Compiler Infrastructure                       *|
00004 |*                                                                            *|
00005 |* This file is distributed under the University of Illinois Open Source      *|
00006 |* License. See LICENSE.TXT for details.                                      *|
00007 |*                                                                            *|
00008 |*===----------------------------------------------------------------------===*|
00009 |*                                                                            *|
00010 |* This header declares the C interface to the PassManagerBuilder class.      *|
00011 |*                                                                            *|
00012 \*===----------------------------------------------------------------------===*/
00013 
00014 #ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
00015 #define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
00016 
00017 #include "llvm-c/Core.h"
00018 
00019 typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
00020 
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024 
00025 /**
00026  * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
00027  * @ingroup LLVMCTransforms
00028  *
00029  * @{
00030  */
00031 
00032 /** See llvm::PassManagerBuilder. */
00033 LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
00034 void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
00035 
00036 /** See llvm::PassManagerBuilder::OptLevel. */
00037 void
00038 LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
00039                                   unsigned OptLevel);
00040 
00041 /** See llvm::PassManagerBuilder::SizeLevel. */
00042 void
00043 LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
00044                                    unsigned SizeLevel);
00045 
00046 /** See llvm::PassManagerBuilder::DisableUnitAtATime. */
00047 void
00048 LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
00049                                             LLVMBool Value);
00050 
00051 /** See llvm::PassManagerBuilder::DisableUnrollLoops. */
00052 void
00053 LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
00054                                             LLVMBool Value);
00055 
00056 /** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
00057 void
00058 LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
00059                                                  LLVMBool Value);
00060 
00061 /** See llvm::PassManagerBuilder::Inliner. */
00062 void
00063 LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
00064                                               unsigned Threshold);
00065 
00066 /** See llvm::PassManagerBuilder::populateFunctionPassManager. */
00067 void
00068 LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
00069                                                   LLVMPassManagerRef PM);
00070 
00071 /** See llvm::PassManagerBuilder::populateModulePassManager. */
00072 void
00073 LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
00074                                                 LLVMPassManagerRef PM);
00075 
00076 /** See llvm::PassManagerBuilder::populateLTOPassManager. */
00077 void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
00078                                                   LLVMPassManagerRef PM,
00079                                                   LLVMBool Internalize,
00080                                                   LLVMBool RunInliner);
00081 
00082 /**
00083  * @}
00084  */
00085 
00086 #ifdef __cplusplus
00087 }
00088 #endif
00089 
00090 #endif