Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
/*===-- llvm-c/Transform/PassBuilder.h - PassBuilder for LLVM C ---*- C -*-===*\
2
|*                                                                            *|
3
|* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
4
|* Exceptions.                                                                *|
5
|* See https://llvm.org/LICENSE.txt for license information.                  *|
6
|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
7
|*                                                                            *|
8
|*===----------------------------------------------------------------------===*|
9
|*                                                                            *|
10
|* This header contains the LLVM-C interface into the new pass manager        *|
11
|*                                                                            *|
12
\*===----------------------------------------------------------------------===*/
13
 
14
#ifndef LLVM_C_TRANSFORMS_PASSBUILDER_H
15
#define LLVM_C_TRANSFORMS_PASSBUILDER_H
16
 
17
#include "llvm-c/Error.h"
18
#include "llvm-c/TargetMachine.h"
19
#include "llvm-c/Types.h"
20
 
21
/**
22
 * @defgroup LLVMCCoreNewPM New Pass Manager
23
 * @ingroup LLVMCCore
24
 *
25
 * @{
26
 */
27
 
28
LLVM_C_EXTERN_C_BEGIN
29
 
30
/**
31
 * A set of options passed which are attached to the Pass Manager upon run.
32
 *
33
 * This corresponds to an llvm::LLVMPassBuilderOptions instance
34
 *
35
 * The details for how the different properties of this structure are used can
36
 * be found in the source for LLVMRunPasses
37
 */
38
typedef struct LLVMOpaquePassBuilderOptions *LLVMPassBuilderOptionsRef;
39
 
40
/**
41
 * Construct and run a set of passes over a module
42
 *
43
 * This function takes a string with the passes that should be used. The format
44
 * of this string is the same as opt's -passes argument for the new pass
45
 * manager. Individual passes may be specified, separated by commas. Full
46
 * pipelines may also be invoked using `default<O3>` and friends. See opt for
47
 * full reference of the Passes format.
48
 */
49
LLVMErrorRef LLVMRunPasses(LLVMModuleRef M, const char *Passes,
50
                           LLVMTargetMachineRef TM,
51
                           LLVMPassBuilderOptionsRef Options);
52
 
53
/**
54
 * Create a new set of options for a PassBuilder
55
 *
56
 * Ownership of the returned instance is given to the client, and they are
57
 * responsible for it. The client should call LLVMDisposePassBuilderOptions
58
 * to free the pass builder options.
59
 */
60
LLVMPassBuilderOptionsRef LLVMCreatePassBuilderOptions(void);
61
 
62
/**
63
 * Toggle adding the VerifierPass for the PassBuilder, ensuring all functions
64
 * inside the module is valid.
65
 */
66
void LLVMPassBuilderOptionsSetVerifyEach(LLVMPassBuilderOptionsRef Options,
67
                                         LLVMBool VerifyEach);
68
 
69
/**
70
 * Toggle debug logging when running the PassBuilder
71
 */
72
void LLVMPassBuilderOptionsSetDebugLogging(LLVMPassBuilderOptionsRef Options,
73
                                           LLVMBool DebugLogging);
74
 
75
void LLVMPassBuilderOptionsSetLoopInterleaving(
76
    LLVMPassBuilderOptionsRef Options, LLVMBool LoopInterleaving);
77
 
78
void LLVMPassBuilderOptionsSetLoopVectorization(
79
    LLVMPassBuilderOptionsRef Options, LLVMBool LoopVectorization);
80
 
81
void LLVMPassBuilderOptionsSetSLPVectorization(
82
    LLVMPassBuilderOptionsRef Options, LLVMBool SLPVectorization);
83
 
84
void LLVMPassBuilderOptionsSetLoopUnrolling(LLVMPassBuilderOptionsRef Options,
85
                                            LLVMBool LoopUnrolling);
86
 
87
void LLVMPassBuilderOptionsSetForgetAllSCEVInLoopUnroll(
88
    LLVMPassBuilderOptionsRef Options, LLVMBool ForgetAllSCEVInLoopUnroll);
89
 
90
void LLVMPassBuilderOptionsSetLicmMssaOptCap(LLVMPassBuilderOptionsRef Options,
91
                                             unsigned LicmMssaOptCap);
92
 
93
void LLVMPassBuilderOptionsSetLicmMssaNoAccForPromotionCap(
94
    LLVMPassBuilderOptionsRef Options, unsigned LicmMssaNoAccForPromotionCap);
95
 
96
void LLVMPassBuilderOptionsSetCallGraphProfile(
97
    LLVMPassBuilderOptionsRef Options, LLVMBool CallGraphProfile);
98
 
99
void LLVMPassBuilderOptionsSetMergeFunctions(LLVMPassBuilderOptionsRef Options,
100
                                             LLVMBool MergeFunctions);
101
 
102
/**
103
 * Dispose of a heap-allocated PassBuilderOptions instance
104
 */
105
void LLVMDisposePassBuilderOptions(LLVMPassBuilderOptionsRef Options);
106
 
107
/**
108
 * @}
109
 */
110
 
111
LLVM_C_EXTERN_C_END
112
 
113
#endif // LLVM_C_TRANSFORMS_PASSBUILDER_H