blob: 69786b341ab4c2967e75c9a2fa581c8b7313f4b6 [file] [log] [blame]
Rafael Espindola6463cfa2011-08-09 22:19:52 +00001/*===-- 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
Jakub Staszak02a3c9b2013-01-10 00:45:19 +000014#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
15#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
Rafael Espindola6463cfa2011-08-09 22:19:52 +000016
Eric Christophera6b96002015-12-18 01:46:52 +000017#include "llvm-c/Types.h"
Rafael Espindola6463cfa2011-08-09 22:19:52 +000018
19typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
20
Evan Cheng51a7a9d2013-04-03 23:12:39 +000021#ifdef __cplusplus
Rafael Espindola6463cfa2011-08-09 22:19:52 +000022extern "C" {
23#endif
24
Gregory Szorc34c863a2012-03-21 03:54:29 +000025/**
26 * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
27 * @ingroup LLVMCTransforms
28 *
29 * @{
30 */
31
Rafael Espindola6463cfa2011-08-09 22:19:52 +000032/** See llvm::PassManagerBuilder. */
33LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
34void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
35
36/** See llvm::PassManagerBuilder::OptLevel. */
37void
38LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
39 unsigned OptLevel);
40
41/** See llvm::PassManagerBuilder::SizeLevel. */
42void
43LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
44 unsigned SizeLevel);
45
46/** See llvm::PassManagerBuilder::DisableUnitAtATime. */
47void
48LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
49 LLVMBool Value);
50
51/** See llvm::PassManagerBuilder::DisableUnrollLoops. */
52void
53LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
54 LLVMBool Value);
55
56/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
57void
58LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
59 LLVMBool Value);
60
61/** See llvm::PassManagerBuilder::Inliner. */
62void
63LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
64 unsigned Threshold);
65
66/** See llvm::PassManagerBuilder::populateFunctionPassManager. */
67void
68LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
69 LLVMPassManagerRef PM);
70
71/** See llvm::PassManagerBuilder::populateModulePassManager. */
72void
73LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
74 LLVMPassManagerRef PM);
75
76/** See llvm::PassManagerBuilder::populateLTOPassManager. */
77void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
78 LLVMPassManagerRef PM,
Nick Lewycky5f508542013-03-10 21:58:22 +000079 LLVMBool Internalize,
80 LLVMBool RunInliner);
Rafael Espindola6463cfa2011-08-09 22:19:52 +000081
Gregory Szorc34c863a2012-03-21 03:54:29 +000082/**
83 * @}
84 */
85
Rafael Espindola6463cfa2011-08-09 22:19:52 +000086#ifdef __cplusplus
87}
Evan Cheng2e254d02013-04-04 17:40:53 +000088#endif
Rafael Espindola6463cfa2011-08-09 22:19:52 +000089
90#endif