Scalar.h revision 341825
1193323Sed/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\
2193323Sed|*                                                                            *|
3193323Sed|*                     The LLVM Compiler Infrastructure                       *|
4193323Sed|*                                                                            *|
5193323Sed|* This file is distributed under the University of Illinois Open Source      *|
6193323Sed|* License. See LICENSE.TXT for details.                                      *|
7193323Sed|*                                                                            *|
8193323Sed|*===----------------------------------------------------------------------===*|
9193323Sed|*                                                                            *|
10193323Sed|* This header declares the C interface to libLLVMScalarOpts.a, which         *|
11193323Sed|* implements various scalar transformations of the LLVM IR.                  *|
12193323Sed|*                                                                            *|
13193323Sed|* Many exotic languages can interoperate with C code but have a harder time  *|
14193323Sed|* with C++ due to name mangling. So in addition to C, this interface enables *|
15193323Sed|* tools written in such languages.                                           *|
16193323Sed|*                                                                            *|
17193323Sed\*===----------------------------------------------------------------------===*/
18193323Sed
19193323Sed#ifndef LLVM_C_TRANSFORMS_SCALAR_H
20193323Sed#define LLVM_C_TRANSFORMS_SCALAR_H
21193323Sed
22296417Sdim#include "llvm-c/Types.h"
23193323Sed
24193323Sed#ifdef __cplusplus
25193323Sedextern "C" {
26193323Sed#endif
27193323Sed
28234353Sdim/**
29234353Sdim * @defgroup LLVMCTransformsScalar Scalar transformations
30234353Sdim * @ingroup LLVMCTransforms
31234353Sdim *
32234353Sdim * @{
33234353Sdim */
34234353Sdim
35193323Sed/** See llvm::createAggressiveDCEPass function. */
36193323Sedvoid LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM);
37193323Sed
38341825Sdim/** See llvm::createAggressiveInstCombinerPass function. */
39341825Sdimvoid LLVMAddAggressiveInstCombinerPass(LLVMPassManagerRef PM);
40341825Sdim
41288943Sdim/** See llvm::createBitTrackingDCEPass function. */
42288943Sdimvoid LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM);
43288943Sdim
44280031Sdim/** See llvm::createAlignmentFromAssumptionsPass function. */
45280031Sdimvoid LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM);
46280031Sdim
47193323Sed/** See llvm::createCFGSimplificationPass function. */
48193323Sedvoid LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM);
49193323Sed
50193323Sed/** See llvm::createDeadStoreEliminationPass function. */
51193323Sedvoid LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM);
52193323Sed
53276479Sdim/** See llvm::createScalarizerPass function. */
54276479Sdimvoid LLVMAddScalarizerPass(LLVMPassManagerRef PM);
55276479Sdim
56276479Sdim/** See llvm::createMergedLoadStoreMotionPass function. */
57276479Sdimvoid LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM);
58276479Sdim
59193323Sed/** See llvm::createGVNPass function. */
60193323Sedvoid LLVMAddGVNPass(LLVMPassManagerRef PM);
61193323Sed
62314564Sdim/** See llvm::createGVNPass function. */
63314564Sdimvoid LLVMAddNewGVNPass(LLVMPassManagerRef PM);
64314564Sdim
65193323Sed/** See llvm::createIndVarSimplifyPass function. */
66193323Sedvoid LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM);
67193323Sed
68193323Sed/** See llvm::createInstructionCombiningPass function. */
69193323Sedvoid LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM);
70193323Sed
71193323Sed/** See llvm::createJumpThreadingPass function. */
72193323Sedvoid LLVMAddJumpThreadingPass(LLVMPassManagerRef PM);
73193323Sed
74193323Sed/** See llvm::createLICMPass function. */
75193323Sedvoid LLVMAddLICMPass(LLVMPassManagerRef PM);
76193323Sed
77193323Sed/** See llvm::createLoopDeletionPass function. */
78193323Sedvoid LLVMAddLoopDeletionPass(LLVMPassManagerRef PM);
79193323Sed
80221345Sdim/** See llvm::createLoopIdiomPass function */
81221345Sdimvoid LLVMAddLoopIdiomPass(LLVMPassManagerRef PM);
82221345Sdim
83193323Sed/** See llvm::createLoopRotatePass function. */
84193323Sedvoid LLVMAddLoopRotatePass(LLVMPassManagerRef PM);
85193323Sed
86261991Sdim/** See llvm::createLoopRerollPass function. */
87261991Sdimvoid LLVMAddLoopRerollPass(LLVMPassManagerRef PM);
88261991Sdim
89193323Sed/** See llvm::createLoopUnrollPass function. */
90193323Sedvoid LLVMAddLoopUnrollPass(LLVMPassManagerRef PM);
91193323Sed
92341825Sdim/** See llvm::createLoopUnrollAndJamPass function. */
93341825Sdimvoid LLVMAddLoopUnrollAndJamPass(LLVMPassManagerRef PM);
94341825Sdim
95193323Sed/** See llvm::createLoopUnswitchPass function. */
96193323Sedvoid LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM);
97193323Sed
98193323Sed/** See llvm::createMemCpyOptPass function. */
99193323Sedvoid LLVMAddMemCpyOptPass(LLVMPassManagerRef PM);
100193323Sed
101261991Sdim/** See llvm::createPartiallyInlineLibCallsPass function. */
102261991Sdimvoid LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM);
103261991Sdim
104193323Sed/** See llvm::createReassociatePass function. */
105193323Sedvoid LLVMAddReassociatePass(LLVMPassManagerRef PM);
106193323Sed
107193323Sed/** See llvm::createSCCPPass function. */
108193323Sedvoid LLVMAddSCCPPass(LLVMPassManagerRef PM);
109193323Sed
110309124Sdim/** See llvm::createSROAPass function. */
111193323Sedvoid LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM);
112193323Sed
113309124Sdim/** See llvm::createSROAPass function. */
114221345Sdimvoid LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM);
115221345Sdim
116309124Sdim/** See llvm::createSROAPass function. */
117205218Srdivackyvoid LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM,
118205218Srdivacky                                                  int Threshold);
119205218Srdivacky
120193323Sed/** See llvm::createSimplifyLibCallsPass function. */
121193323Sedvoid LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM);
122193323Sed
123193323Sed/** See llvm::createTailCallEliminationPass function. */
124193323Sedvoid LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM);
125193323Sed
126193323Sed/** See llvm::createConstantPropagationPass function. */
127193323Sedvoid LLVMAddConstantPropagationPass(LLVMPassManagerRef PM);
128193323Sed
129193323Sed/** See llvm::demotePromoteMemoryToRegisterPass function. */
130193323Sedvoid LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM);
131193323Sed
132205218Srdivacky/** See llvm::createVerifierPass function. */
133205218Srdivackyvoid LLVMAddVerifierPass(LLVMPassManagerRef PM);
134205218Srdivacky
135221345Sdim/** See llvm::createCorrelatedValuePropagationPass function */
136221345Sdimvoid LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM);
137221345Sdim
138221345Sdim/** See llvm::createEarlyCSEPass function */
139221345Sdimvoid LLVMAddEarlyCSEPass(LLVMPassManagerRef PM);
140221345Sdim
141314564Sdim/** See llvm::createEarlyCSEPass function */
142314564Sdimvoid LLVMAddEarlyCSEMemSSAPass(LLVMPassManagerRef PM);
143314564Sdim
144226633Sdim/** See llvm::createLowerExpectIntrinsicPass function */
145226633Sdimvoid LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM);
146226633Sdim
147221345Sdim/** See llvm::createTypeBasedAliasAnalysisPass function */
148221345Sdimvoid LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM);
149221345Sdim
150280031Sdim/** See llvm::createScopedNoAliasAAPass function */
151280031Sdimvoid LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM);
152280031Sdim
153221345Sdim/** See llvm::createBasicAliasAnalysisPass function */
154221345Sdimvoid LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM);
155221345Sdim
156234353Sdim/**
157234353Sdim * @}
158234353Sdim */
159221345Sdim
160193323Sed#ifdef __cplusplus
161193323Sed}
162193323Sed#endif /* defined(__cplusplus) */
163193323Sed
164193323Sed#endif
165