Scalar.h revision 296417
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
38288943Sdim/** See llvm::createBitTrackingDCEPass function. */
39288943Sdimvoid LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM);
40288943Sdim
41280031Sdim/** See llvm::createAlignmentFromAssumptionsPass function. */
42280031Sdimvoid LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM);
43280031Sdim
44193323Sed/** See llvm::createCFGSimplificationPass function. */
45193323Sedvoid LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM);
46193323Sed
47193323Sed/** See llvm::createDeadStoreEliminationPass function. */
48193323Sedvoid LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM);
49193323Sed
50276479Sdim/** See llvm::createScalarizerPass function. */
51276479Sdimvoid LLVMAddScalarizerPass(LLVMPassManagerRef PM);
52276479Sdim
53276479Sdim/** See llvm::createMergedLoadStoreMotionPass function. */
54276479Sdimvoid LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM);
55276479Sdim
56193323Sed/** See llvm::createGVNPass function. */
57193323Sedvoid LLVMAddGVNPass(LLVMPassManagerRef PM);
58193323Sed
59193323Sed/** See llvm::createIndVarSimplifyPass function. */
60193323Sedvoid LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM);
61193323Sed
62193323Sed/** See llvm::createInstructionCombiningPass function. */
63193323Sedvoid LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM);
64193323Sed
65193323Sed/** See llvm::createJumpThreadingPass function. */
66193323Sedvoid LLVMAddJumpThreadingPass(LLVMPassManagerRef PM);
67193323Sed
68193323Sed/** See llvm::createLICMPass function. */
69193323Sedvoid LLVMAddLICMPass(LLVMPassManagerRef PM);
70193323Sed
71193323Sed/** See llvm::createLoopDeletionPass function. */
72193323Sedvoid LLVMAddLoopDeletionPass(LLVMPassManagerRef PM);
73193323Sed
74221345Sdim/** See llvm::createLoopIdiomPass function */
75221345Sdimvoid LLVMAddLoopIdiomPass(LLVMPassManagerRef PM);
76221345Sdim
77193323Sed/** See llvm::createLoopRotatePass function. */
78193323Sedvoid LLVMAddLoopRotatePass(LLVMPassManagerRef PM);
79193323Sed
80261991Sdim/** See llvm::createLoopRerollPass function. */
81261991Sdimvoid LLVMAddLoopRerollPass(LLVMPassManagerRef PM);
82261991Sdim
83193323Sed/** See llvm::createLoopUnrollPass function. */
84193323Sedvoid LLVMAddLoopUnrollPass(LLVMPassManagerRef PM);
85193323Sed
86193323Sed/** See llvm::createLoopUnswitchPass function. */
87193323Sedvoid LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM);
88193323Sed
89193323Sed/** See llvm::createMemCpyOptPass function. */
90193323Sedvoid LLVMAddMemCpyOptPass(LLVMPassManagerRef PM);
91193323Sed
92261991Sdim/** See llvm::createPartiallyInlineLibCallsPass function. */
93261991Sdimvoid LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM);
94261991Sdim
95280031Sdim/** See llvm::createLowerSwitchPass function. */
96280031Sdimvoid LLVMAddLowerSwitchPass(LLVMPassManagerRef PM);
97280031Sdim
98193323Sed/** See llvm::createPromoteMemoryToRegisterPass function. */
99193323Sedvoid LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM);
100193323Sed
101193323Sed/** See llvm::createReassociatePass function. */
102193323Sedvoid LLVMAddReassociatePass(LLVMPassManagerRef PM);
103193323Sed
104193323Sed/** See llvm::createSCCPPass function. */
105193323Sedvoid LLVMAddSCCPPass(LLVMPassManagerRef PM);
106193323Sed
107193323Sed/** See llvm::createScalarReplAggregatesPass function. */
108193323Sedvoid LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM);
109193323Sed
110205218Srdivacky/** See llvm::createScalarReplAggregatesPass function. */
111221345Sdimvoid LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM);
112221345Sdim
113221345Sdim/** See llvm::createScalarReplAggregatesPass function. */
114205218Srdivackyvoid LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM,
115205218Srdivacky                                                  int Threshold);
116205218Srdivacky
117193323Sed/** See llvm::createSimplifyLibCallsPass function. */
118193323Sedvoid LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM);
119193323Sed
120193323Sed/** See llvm::createTailCallEliminationPass function. */
121193323Sedvoid LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM);
122193323Sed
123193323Sed/** See llvm::createConstantPropagationPass function. */
124193323Sedvoid LLVMAddConstantPropagationPass(LLVMPassManagerRef PM);
125193323Sed
126193323Sed/** See llvm::demotePromoteMemoryToRegisterPass function. */
127193323Sedvoid LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM);
128193323Sed
129205218Srdivacky/** See llvm::createVerifierPass function. */
130205218Srdivackyvoid LLVMAddVerifierPass(LLVMPassManagerRef PM);
131205218Srdivacky
132221345Sdim/** See llvm::createCorrelatedValuePropagationPass function */
133221345Sdimvoid LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM);
134221345Sdim
135221345Sdim/** See llvm::createEarlyCSEPass function */
136221345Sdimvoid LLVMAddEarlyCSEPass(LLVMPassManagerRef PM);
137221345Sdim
138226633Sdim/** See llvm::createLowerExpectIntrinsicPass function */
139226633Sdimvoid LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM);
140226633Sdim
141221345Sdim/** See llvm::createTypeBasedAliasAnalysisPass function */
142221345Sdimvoid LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM);
143221345Sdim
144280031Sdim/** See llvm::createScopedNoAliasAAPass function */
145280031Sdimvoid LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM);
146280031Sdim
147221345Sdim/** See llvm::createBasicAliasAnalysisPass function */
148221345Sdimvoid LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM);
149221345Sdim
150234353Sdim/**
151234353Sdim * @}
152234353Sdim */
153221345Sdim
154193323Sed#ifdef __cplusplus
155193323Sed}
156193323Sed#endif /* defined(__cplusplus) */
157193323Sed
158193323Sed#endif
159