Scalar.cpp revision 205218
1193323Sed//===-- Scalar.cpp --------------------------------------------------------===//
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 file implements the C bindings for libLLVMScalarOpts.a, which implements
11193323Sed// several scalar transformations over the LLVM intermediate representation.
12193323Sed//
13193323Sed//===----------------------------------------------------------------------===//
14193323Sed
15193323Sed#include "llvm-c/Transforms/Scalar.h"
16193323Sed#include "llvm/PassManager.h"
17205218Srdivacky#include "llvm/Analysis/Verifier.h"
18205218Srdivacky#include "llvm/Target/TargetData.h"
19193323Sed#include "llvm/Transforms/Scalar.h"
20193323Sed
21193323Sedusing namespace llvm;
22193323Sed
23193323Sedvoid LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM) {
24193323Sed  unwrap(PM)->add(createAggressiveDCEPass());
25193323Sed}
26193323Sed
27193323Sedvoid LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM) {
28193323Sed  unwrap(PM)->add(createCFGSimplificationPass());
29193323Sed}
30193323Sed
31193323Sedvoid LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM) {
32193323Sed  unwrap(PM)->add(createDeadStoreEliminationPass());
33193323Sed}
34193323Sed
35193323Sedvoid LLVMAddGVNPass(LLVMPassManagerRef PM) {
36193323Sed  unwrap(PM)->add(createGVNPass());
37193323Sed}
38193323Sed
39193323Sedvoid LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM) {
40193323Sed  unwrap(PM)->add(createIndVarSimplifyPass());
41193323Sed}
42193323Sed
43193323Sedvoid LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM) {
44193323Sed  unwrap(PM)->add(createInstructionCombiningPass());
45193323Sed}
46193323Sed
47193323Sedvoid LLVMAddJumpThreadingPass(LLVMPassManagerRef PM) {
48193323Sed  unwrap(PM)->add(createJumpThreadingPass());
49193323Sed}
50193323Sed
51193323Sedvoid LLVMAddLICMPass(LLVMPassManagerRef PM) {
52193323Sed  unwrap(PM)->add(createLICMPass());
53193323Sed}
54193323Sed
55193323Sedvoid LLVMAddLoopDeletionPass(LLVMPassManagerRef PM) {
56193323Sed  unwrap(PM)->add(createLoopDeletionPass());
57193323Sed}
58193323Sed
59193323Sedvoid LLVMAddLoopIndexSplitPass(LLVMPassManagerRef PM) {
60193323Sed  unwrap(PM)->add(createLoopIndexSplitPass());
61193323Sed}
62193323Sed
63193323Sedvoid LLVMAddLoopRotatePass(LLVMPassManagerRef PM) {
64193323Sed  unwrap(PM)->add(createLoopRotatePass());
65193323Sed}
66193323Sed
67193323Sedvoid LLVMAddLoopUnrollPass(LLVMPassManagerRef PM) {
68193323Sed  unwrap(PM)->add(createLoopUnrollPass());
69193323Sed}
70193323Sed
71193323Sedvoid LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM) {
72193323Sed  unwrap(PM)->add(createLoopUnswitchPass());
73193323Sed}
74193323Sed
75193323Sedvoid LLVMAddMemCpyOptPass(LLVMPassManagerRef PM) {
76193323Sed  unwrap(PM)->add(createMemCpyOptPass());
77193323Sed}
78193323Sed
79193323Sedvoid LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM) {
80193323Sed  unwrap(PM)->add(createPromoteMemoryToRegisterPass());
81193323Sed}
82193323Sed
83193323Sedvoid LLVMAddReassociatePass(LLVMPassManagerRef PM) {
84193323Sed  unwrap(PM)->add(createReassociatePass());
85193323Sed}
86193323Sed
87193323Sedvoid LLVMAddSCCPPass(LLVMPassManagerRef PM) {
88193323Sed  unwrap(PM)->add(createSCCPPass());
89193323Sed}
90193323Sed
91193323Sedvoid LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM) {
92193323Sed  unwrap(PM)->add(createScalarReplAggregatesPass());
93193323Sed}
94193323Sed
95205218Srdivackyvoid LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM,
96205218Srdivacky                                                  int Threshold) {
97205218Srdivacky  unwrap(PM)->add(createScalarReplAggregatesPass(Threshold));
98205218Srdivacky}
99205218Srdivacky
100193323Sedvoid LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM) {
101193323Sed  unwrap(PM)->add(createSimplifyLibCallsPass());
102193323Sed}
103193323Sed
104193323Sedvoid LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM) {
105193323Sed  unwrap(PM)->add(createTailCallEliminationPass());
106193323Sed}
107193323Sed
108193323Sedvoid LLVMAddConstantPropagationPass(LLVMPassManagerRef PM) {
109193323Sed  unwrap(PM)->add(createConstantPropagationPass());
110193323Sed}
111193323Sed
112193323Sedvoid LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM) {
113193323Sed  unwrap(PM)->add(createDemoteRegisterToMemoryPass());
114193323Sed}
115205218Srdivacky
116205218Srdivackyvoid LLVMAddVerifierPass(LLVMPassManagerRef PM) {
117205218Srdivacky  unwrap(PM)->add(createVerifierPass());
118205218Srdivacky}
119