blob: b39dd243991a0715a9b3d6f650e1876d16c3c826 [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
17#include "llvm-c/Core.h"
18
19typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
20
Evan Cheng51a7a9d2013-04-03 23:12:39 +000021#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
Rafael Espindola6463cfa2011-08-09 22:19:52 +000022#include "llvm/Transforms/IPO/PassManagerBuilder.h"
Evan Cheng51a7a9d2013-04-03 23:12:39 +000023#endif
24
25#ifdef __cplusplus
Rafael Espindola6463cfa2011-08-09 22:19:52 +000026extern "C" {
27#endif
28
Gregory Szorc34c863a2012-03-21 03:54:29 +000029/**
30 * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
31 * @ingroup LLVMCTransforms
32 *
33 * @{
34 */
35
Rafael Espindola6463cfa2011-08-09 22:19:52 +000036/** See llvm::PassManagerBuilder. */
37LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
38void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
39
40/** See llvm::PassManagerBuilder::OptLevel. */
41void
42LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
43 unsigned OptLevel);
44
45/** See llvm::PassManagerBuilder::SizeLevel. */
46void
47LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
48 unsigned SizeLevel);
49
50/** See llvm::PassManagerBuilder::DisableUnitAtATime. */
51void
52LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
53 LLVMBool Value);
54
55/** See llvm::PassManagerBuilder::DisableUnrollLoops. */
56void
57LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
58 LLVMBool Value);
59
60/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
61void
62LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
63 LLVMBool Value);
64
65/** See llvm::PassManagerBuilder::Inliner. */
66void
67LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
68 unsigned Threshold);
69
70/** See llvm::PassManagerBuilder::populateFunctionPassManager. */
71void
72LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
73 LLVMPassManagerRef PM);
74
75/** See llvm::PassManagerBuilder::populateModulePassManager. */
76void
77LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
78 LLVMPassManagerRef PM);
79
80/** See llvm::PassManagerBuilder::populateLTOPassManager. */
81void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
82 LLVMPassManagerRef PM,
Nick Lewycky5f508542013-03-10 21:58:22 +000083 LLVMBool Internalize,
84 LLVMBool RunInliner);
Rafael Espindola6463cfa2011-08-09 22:19:52 +000085
Gregory Szorc34c863a2012-03-21 03:54:29 +000086/**
87 * @}
88 */
89
Rafael Espindola6463cfa2011-08-09 22:19:52 +000090#ifdef __cplusplus
91}
Evan Cheng51a7a9d2013-04-03 23:12:39 +000092#endif
Rafael Espindola6463cfa2011-08-09 22:19:52 +000093
Evan Cheng51a7a9d2013-04-03 23:12:39 +000094#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
Rafael Espindola6463cfa2011-08-09 22:19:52 +000095namespace llvm {
96 inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) {
97 return reinterpret_cast<PassManagerBuilder*>(P);
98 }
99
100 inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) {
101 return reinterpret_cast<LLVMPassManagerBuilderRef>(P);
102 }
103}
Evan Cheng51a7a9d2013-04-03 23:12:39 +0000104#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
Rafael Espindola6463cfa2011-08-09 22:19:52 +0000105
106#endif