Scalar.h revision 221345
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 25extern "C" { 26#endif 27 28/** See llvm::createAggressiveDCEPass function. */ 29void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM); 30 31/** See llvm::createCFGSimplificationPass function. */ 32void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM); 33 34/** See llvm::createDeadStoreEliminationPass function. */ 35void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM); 36 37/** See llvm::createGVNPass function. */ 38void LLVMAddGVNPass(LLVMPassManagerRef PM); 39 40/** See llvm::createIndVarSimplifyPass function. */ 41void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM); 42 43/** See llvm::createInstructionCombiningPass function. */ 44void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); 45 46/** See llvm::createJumpThreadingPass function. */ 47void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM); 48 49/** See llvm::createLICMPass function. */ 50void LLVMAddLICMPass(LLVMPassManagerRef PM); 51 52/** See llvm::createLoopDeletionPass function. */ 53void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM); 54 55/** See llvm::createLoopIdiomPass function */ 56void LLVMAddLoopIdiomPass(LLVMPassManagerRef PM); 57 58/** See llvm::createLoopRotatePass function. */ 59void LLVMAddLoopRotatePass(LLVMPassManagerRef PM); 60 61/** See llvm::createLoopUnrollPass function. */ 62void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM); 63 64/** See llvm::createLoopUnswitchPass function. */ 65void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM); 66 67/** See llvm::createMemCpyOptPass function. */ 68void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM); 69 70/** See llvm::createPromoteMemoryToRegisterPass function. */ 71void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM); 72 73/** See llvm::createReassociatePass function. */ 74void LLVMAddReassociatePass(LLVMPassManagerRef PM); 75 76/** See llvm::createSCCPPass function. */ 77void LLVMAddSCCPPass(LLVMPassManagerRef PM); 78 79/** See llvm::createScalarReplAggregatesPass function. */ 80void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM); 81 82/** See llvm::createScalarReplAggregatesPass function. */ 83void LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM); 84 85/** See llvm::createScalarReplAggregatesPass function. */ 86void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, 87 int Threshold); 88 89/** See llvm::createSimplifyLibCallsPass function. */ 90void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM); 91 92/** See llvm::createTailCallEliminationPass function. */ 93void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM); 94 95/** See llvm::createConstantPropagationPass function. */ 96void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM); 97 98/** See llvm::demotePromoteMemoryToRegisterPass function. */ 99void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM); 100 101/** See llvm::createVerifierPass function. */ 102void LLVMAddVerifierPass(LLVMPassManagerRef PM); 103 104/** See llvm::createCorrelatedValuePropagationPass function */ 105void LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM); 106 107/** See llvm::createEarlyCSEPass function */ 108void LLVMAddEarlyCSEPass(LLVMPassManagerRef PM); 109 110/** See llvm::createTypeBasedAliasAnalysisPass function */ 111void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM); 112 113/** See llvm::createBasicAliasAnalysisPass function */ 114void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); 115 116 117#ifdef __cplusplus 118} 119#endif /* defined(__cplusplus) */ 120 121#endif 122