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
22193323Sed#include "llvm-c/Core.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
38193323Sed/** See llvm::createCFGSimplificationPass function. */
39193323Sedvoid LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM);
40193323Sed
41193323Sed/** See llvm::createDeadStoreEliminationPass function. */
42193323Sedvoid LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM);
43193323Sed
44193323Sed/** See llvm::createGVNPass function. */
45193323Sedvoid LLVMAddGVNPass(LLVMPassManagerRef PM);
46193323Sed
47193323Sed/** See llvm::createIndVarSimplifyPass function. */
48193323Sedvoid LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM);
49193323Sed
50193323Sed/** See llvm::createInstructionCombiningPass function. */
51193323Sedvoid LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM);
52193323Sed
53193323Sed/** See llvm::createJumpThreadingPass function. */
54193323Sedvoid LLVMAddJumpThreadingPass(LLVMPassManagerRef PM);
55193323Sed
56193323Sed/** See llvm::createLICMPass function. */
57193323Sedvoid LLVMAddLICMPass(LLVMPassManagerRef PM);
58193323Sed
59193323Sed/** See llvm::createLoopDeletionPass function. */
60193323Sedvoid LLVMAddLoopDeletionPass(LLVMPassManagerRef PM);
61193323Sed
62221345Sdim/** See llvm::createLoopIdiomPass function */
63221345Sdimvoid LLVMAddLoopIdiomPass(LLVMPassManagerRef PM);
64221345Sdim
65193323Sed/** See llvm::createLoopRotatePass function. */
66193323Sedvoid LLVMAddLoopRotatePass(LLVMPassManagerRef PM);
67193323Sed
68263508Sdim/** See llvm::createLoopRerollPass function. */
69263508Sdimvoid LLVMAddLoopRerollPass(LLVMPassManagerRef PM);
70263508Sdim
71193323Sed/** See llvm::createLoopUnrollPass function. */
72193323Sedvoid LLVMAddLoopUnrollPass(LLVMPassManagerRef PM);
73193323Sed
74193323Sed/** See llvm::createLoopUnswitchPass function. */
75193323Sedvoid LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM);
76193323Sed
77193323Sed/** See llvm::createMemCpyOptPass function. */
78193323Sedvoid LLVMAddMemCpyOptPass(LLVMPassManagerRef PM);
79193323Sed
80263508Sdim/** See llvm::createPartiallyInlineLibCallsPass function. */
81263508Sdimvoid LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM);
82263508Sdim
83193323Sed/** See llvm::createPromoteMemoryToRegisterPass function. */
84193323Sedvoid LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM);
85193323Sed
86193323Sed/** See llvm::createReassociatePass function. */
87193323Sedvoid LLVMAddReassociatePass(LLVMPassManagerRef PM);
88193323Sed
89193323Sed/** See llvm::createSCCPPass function. */
90193323Sedvoid LLVMAddSCCPPass(LLVMPassManagerRef PM);
91193323Sed
92193323Sed/** See llvm::createScalarReplAggregatesPass function. */
93193323Sedvoid LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM);
94193323Sed
95205218Srdivacky/** See llvm::createScalarReplAggregatesPass function. */
96221345Sdimvoid LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM);
97221345Sdim
98221345Sdim/** See llvm::createScalarReplAggregatesPass function. */
99205218Srdivackyvoid LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM,
100205218Srdivacky                                                  int Threshold);
101205218Srdivacky
102193323Sed/** See llvm::createSimplifyLibCallsPass function. */
103193323Sedvoid LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM);
104193323Sed
105193323Sed/** See llvm::createTailCallEliminationPass function. */
106193323Sedvoid LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM);
107193323Sed
108193323Sed/** See llvm::createConstantPropagationPass function. */
109193323Sedvoid LLVMAddConstantPropagationPass(LLVMPassManagerRef PM);
110193323Sed
111193323Sed/** See llvm::demotePromoteMemoryToRegisterPass function. */
112193323Sedvoid LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM);
113193323Sed
114205218Srdivacky/** See llvm::createVerifierPass function. */
115205218Srdivackyvoid LLVMAddVerifierPass(LLVMPassManagerRef PM);
116205218Srdivacky
117221345Sdim/** See llvm::createCorrelatedValuePropagationPass function */
118221345Sdimvoid LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM);
119221345Sdim
120221345Sdim/** See llvm::createEarlyCSEPass function */
121221345Sdimvoid LLVMAddEarlyCSEPass(LLVMPassManagerRef PM);
122221345Sdim
123226633Sdim/** See llvm::createLowerExpectIntrinsicPass function */
124226633Sdimvoid LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM);
125226633Sdim
126221345Sdim/** See llvm::createTypeBasedAliasAnalysisPass function */
127221345Sdimvoid LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM);
128221345Sdim
129221345Sdim/** See llvm::createBasicAliasAnalysisPass function */
130221345Sdimvoid LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM);
131221345Sdim
132234353Sdim/**
133234353Sdim * @}
134234353Sdim */
135221345Sdim
136193323Sed#ifdef __cplusplus
137193323Sed}
138193323Sed#endif /* defined(__cplusplus) */
139193323Sed
140193323Sed#endif
141