1 /*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\ 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 header declares the C interface to libLLVMScalarOpts.a, which *| 11 |* implements various scalar transformations of the LLVM IR. *| 12 |* *| 13 |* Many exotic languages can interoperate with C code but have a harder time *| 14 |* with C++ due to name mangling. So in addition to C, this interface enables *| 15 |* tools written in such languages. *| 16 |* *| 17 \*===----------------------------------------------------------------------===*/ 18 19 #ifndef LLVM_C_TRANSFORMS_SCALAR_H 20 #define LLVM_C_TRANSFORMS_SCALAR_H 21 22 #include "llvm-c/Core.h" 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 /** See llvm::createAggressiveDCEPass function. */ 29 void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM); 30 31 /** See llvm::createCFGSimplificationPass function. */ 32 void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM); 33 34 /** See llvm::createDeadStoreEliminationPass function. */ 35 void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM); 36 37 /** See llvm::createGVNPass function. */ 38 void LLVMAddGVNPass(LLVMPassManagerRef PM); 39 40 /** See llvm::createIndVarSimplifyPass function. */ 41 void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM); 42 43 /** See llvm::createInstructionCombiningPass function. */ 44 void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); 45 46 /** See llvm::createJumpThreadingPass function. */ 47 void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM); 48 49 /** See llvm::createLICMPass function. */ 50 void LLVMAddLICMPass(LLVMPassManagerRef PM); 51 52 /** See llvm::createLoopDeletionPass function. */ 53 void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM); 54 55 /** See llvm::createLoopIdiomPass function */ 56 void LLVMAddLoopIdiomPass(LLVMPassManagerRef PM); 57 58 /** See llvm::createLoopRotatePass function. */ 59 void LLVMAddLoopRotatePass(LLVMPassManagerRef PM); 60 61 /** See llvm::createLoopUnrollPass function. */ 62 void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM); 63 64 /** See llvm::createLoopUnswitchPass function. */ 65 void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM); 66 67 /** See llvm::createMemCpyOptPass function. */ 68 void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM); 69 70 /** See llvm::createPromoteMemoryToRegisterPass function. */ 71 void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM); 72 73 /** See llvm::createReassociatePass function. */ 74 void LLVMAddReassociatePass(LLVMPassManagerRef PM); 75 76 /** See llvm::createSCCPPass function. */ 77 void LLVMAddSCCPPass(LLVMPassManagerRef PM); 78 79 /** See llvm::createScalarReplAggregatesPass function. */ 80 void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM); 81 82 /** See llvm::createScalarReplAggregatesPass function. */ 83 void LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM); 84 85 /** See llvm::createScalarReplAggregatesPass function. */ 86 void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, 87 int Threshold); 88 89 /** See llvm::createSimplifyLibCallsPass function. */ 90 void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM); 91 92 /** See llvm::createTailCallEliminationPass function. */ 93 void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM); 94 95 /** See llvm::createConstantPropagationPass function. */ 96 void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM); 97 98 /** See llvm::demotePromoteMemoryToRegisterPass function. */ 99 void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM); 100 101 /** See llvm::createVerifierPass function. */ 102 void LLVMAddVerifierPass(LLVMPassManagerRef PM); 103 104 /** See llvm::createCorrelatedValuePropagationPass function */ 105 void LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM); 106 107 /** See llvm::createEarlyCSEPass function */ 108 void LLVMAddEarlyCSEPass(LLVMPassManagerRef PM); 109 110 /** See llvm::createLowerExpectIntrinsicPass function */ 111 void LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM); 112 113 /** See llvm::createTypeBasedAliasAnalysisPass function */ 114 void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM); 115 116 /** See llvm::createBasicAliasAnalysisPass function */ 117 void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); 118 119 120 #ifdef __cplusplus 121 } 122 #endif /* defined(__cplusplus) */ 123 124 #endif 125