cache results of operator*
[oota-llvm.git] / lib / Transforms / Scalar / Scalar.cpp
1 //===-- Scalar.cpp --------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements the C bindings for libLLVMScalarOpts.a, which implements
11 // several scalar transformations over the LLVM intermediate representation.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #include "llvm-c/Transforms/Scalar.h"
16 #include "llvm/PassManager.h"
17 #include "llvm/Analysis/Verifier.h"
18 #include "llvm/Target/TargetData.h"
19 #include "llvm/Transforms/Scalar.h"
20
21 using namespace llvm;
22
23 void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM) {
24   unwrap(PM)->add(createAggressiveDCEPass());
25 }
26
27 void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM) {
28   unwrap(PM)->add(createCFGSimplificationPass());
29 }
30
31 void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM) {
32   unwrap(PM)->add(createDeadStoreEliminationPass());
33 }
34
35 void LLVMAddGVNPass(LLVMPassManagerRef PM) {
36   unwrap(PM)->add(createGVNPass());
37 }
38
39 void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM) {
40   unwrap(PM)->add(createIndVarSimplifyPass());
41 }
42
43 void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM) {
44   unwrap(PM)->add(createInstructionCombiningPass());
45 }
46
47 void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM) {
48   unwrap(PM)->add(createJumpThreadingPass());
49 }
50
51 void LLVMAddLICMPass(LLVMPassManagerRef PM) {
52   unwrap(PM)->add(createLICMPass());
53 }
54
55 void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM) {
56   unwrap(PM)->add(createLoopDeletionPass());
57 }
58
59 void LLVMAddLoopIndexSplitPass(LLVMPassManagerRef PM) {
60   unwrap(PM)->add(createLoopIndexSplitPass());
61 }
62
63 void LLVMAddLoopRotatePass(LLVMPassManagerRef PM) {
64   unwrap(PM)->add(createLoopRotatePass());
65 }
66
67 void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM) {
68   unwrap(PM)->add(createLoopUnrollPass());
69 }
70
71 void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM) {
72   unwrap(PM)->add(createLoopUnswitchPass());
73 }
74
75 void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM) {
76   unwrap(PM)->add(createMemCpyOptPass());
77 }
78
79 void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM) {
80   unwrap(PM)->add(createPromoteMemoryToRegisterPass());
81 }
82
83 void LLVMAddReassociatePass(LLVMPassManagerRef PM) {
84   unwrap(PM)->add(createReassociatePass());
85 }
86
87 void LLVMAddSCCPPass(LLVMPassManagerRef PM) {
88   unwrap(PM)->add(createSCCPPass());
89 }
90
91 void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM) {
92   unwrap(PM)->add(createScalarReplAggregatesPass());
93 }
94
95 void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM,
96                                                   int Threshold) {
97   unwrap(PM)->add(createScalarReplAggregatesPass(Threshold));
98 }
99
100 void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM) {
101   unwrap(PM)->add(createSimplifyLibCallsPass());
102 }
103
104 void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM) {
105   unwrap(PM)->add(createTailCallEliminationPass());
106 }
107
108 void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM) {
109   unwrap(PM)->add(createConstantPropagationPass());
110 }
111
112 void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM) {
113   unwrap(PM)->add(createDemoteRegisterToMemoryPass());
114 }
115
116 void LLVMAddVerifierPass(LLVMPassManagerRef PM) {
117   unwrap(PM)->add(createVerifierPass());
118 }