1/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- 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 declares the C interface to libLLVMScalarOpts.a, which         *|
11|* implements various scalar transformations of the LLVM IR.                  *|
12|*                                                                            *|
13|* Many exotic languages can interoperate with C code but have a harder time  *|
14|* with C++ due to name mangling. So in addition to C, this interface enables *|
15|* tools written in such languages.                                           *|
16|*                                                                            *|
17\*===----------------------------------------------------------------------===*/
18
19#ifndef LLVM_C_TRANSFORMS_SCALAR_H
20#define LLVM_C_TRANSFORMS_SCALAR_H
21
22#include "llvm-c/ExternC.h"
23#include "llvm-c/Types.h"
24
25LLVM_C_EXTERN_C_BEGIN
26
27/**
28 * @defgroup LLVMCTransformsScalar Scalar transformations
29 * @ingroup LLVMCTransforms
30 *
31 * @{
32 */
33
34/** See llvm::createAggressiveDCEPass function. */
35void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM);
36
37/** See llvm::createDeadCodeEliminationPass function. */
38void LLVMAddDCEPass(LLVMPassManagerRef PM);
39
40/** See llvm::createBitTrackingDCEPass function. */
41void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM);
42
43/** See llvm::createAlignmentFromAssumptionsPass function. */
44void LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM);
45
46/** See llvm::createCFGSimplificationPass function. */
47void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM);
48
49/** See llvm::createDeadStoreEliminationPass function. */
50void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM);
51
52/** See llvm::createScalarizerPass function. */
53void LLVMAddScalarizerPass(LLVMPassManagerRef PM);
54
55/** See llvm::createMergedLoadStoreMotionPass function. */
56void LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM);
57
58/** See llvm::createGVNPass function. */
59void LLVMAddGVNPass(LLVMPassManagerRef PM);
60
61/** See llvm::createGVNPass function. */
62void LLVMAddNewGVNPass(LLVMPassManagerRef PM);
63
64/** See llvm::createIndVarSimplifyPass function. */
65void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM);
66
67/** See llvm::createInstructionCombiningPass function. */
68void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM);
69
70/** See llvm::createJumpThreadingPass function. */
71void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM);
72
73/** See llvm::createLICMPass function. */
74void LLVMAddLICMPass(LLVMPassManagerRef PM);
75
76/** See llvm::createLoopDeletionPass function. */
77void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM);
78
79/** See llvm::createLoopIdiomPass function */
80void LLVMAddLoopIdiomPass(LLVMPassManagerRef PM);
81
82/** See llvm::createLoopRotatePass function. */
83void LLVMAddLoopRotatePass(LLVMPassManagerRef PM);
84
85/** See llvm::createLoopRerollPass function. */
86void LLVMAddLoopRerollPass(LLVMPassManagerRef PM);
87
88/** See llvm::createLoopUnrollPass function. */
89void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM);
90
91/** See llvm::createLoopUnrollAndJamPass function. */
92void LLVMAddLoopUnrollAndJamPass(LLVMPassManagerRef PM);
93
94/** See llvm::createLoopUnswitchPass function. */
95void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM);
96
97/** See llvm::createLowerAtomicPass function. */
98void LLVMAddLowerAtomicPass(LLVMPassManagerRef PM);
99
100/** See llvm::createMemCpyOptPass function. */
101void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM);
102
103/** See llvm::createPartiallyInlineLibCallsPass function. */
104void LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM);
105
106/** See llvm::createReassociatePass function. */
107void LLVMAddReassociatePass(LLVMPassManagerRef PM);
108
109/** See llvm::createSCCPPass function. */
110void LLVMAddSCCPPass(LLVMPassManagerRef PM);
111
112/** See llvm::createSROAPass function. */
113void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM);
114
115/** See llvm::createSROAPass function. */
116void LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM);
117
118/** See llvm::createSROAPass function. */
119void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM,
120                                                  int Threshold);
121
122/** See llvm::createSimplifyLibCallsPass function. */
123void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM);
124
125/** See llvm::createTailCallEliminationPass function. */
126void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM);
127
128/** See llvm::createConstantPropagationPass function. */
129void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM);
130
131/** See llvm::demotePromoteMemoryToRegisterPass function. */
132void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM);
133
134/** See llvm::createVerifierPass function. */
135void LLVMAddVerifierPass(LLVMPassManagerRef PM);
136
137/** See llvm::createCorrelatedValuePropagationPass function */
138void LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM);
139
140/** See llvm::createEarlyCSEPass function */
141void LLVMAddEarlyCSEPass(LLVMPassManagerRef PM);
142
143/** See llvm::createEarlyCSEPass function */
144void LLVMAddEarlyCSEMemSSAPass(LLVMPassManagerRef PM);
145
146/** See llvm::createLowerExpectIntrinsicPass function */
147void LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM);
148
149/** See llvm::createLowerConstantIntrinsicsPass function */
150void LLVMAddLowerConstantIntrinsicsPass(LLVMPassManagerRef PM);
151
152/** See llvm::createTypeBasedAliasAnalysisPass function */
153void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM);
154
155/** See llvm::createScopedNoAliasAAPass function */
156void LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM);
157
158/** See llvm::createBasicAliasAnalysisPass function */
159void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM);
160
161/** See llvm::createUnifyFunctionExitNodesPass function */
162void LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM);
163
164/**
165 * @}
166 */
167
168LLVM_C_EXTERN_C_END
169
170#endif
171