Scalar.h revision 218893
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::createLoopRotatePass function. */ 56void LLVMAddLoopRotatePass(LLVMPassManagerRef PM); 57 58/** See llvm::createLoopUnrollPass function. */ 59void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM); 60 61/** See llvm::createLoopUnswitchPass function. */ 62void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM); 63 64/** See llvm::createMemCpyOptPass function. */ 65void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM); 66 67/** See llvm::createPromoteMemoryToRegisterPass function. */ 68void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM); 69 70/** See llvm::createReassociatePass function. */ 71void LLVMAddReassociatePass(LLVMPassManagerRef PM); 72 73/** See llvm::createSCCPPass function. */ 74void LLVMAddSCCPPass(LLVMPassManagerRef PM); 75 76/** See llvm::createScalarReplAggregatesPass function. */ 77void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM); 78 79/** See llvm::createScalarReplAggregatesPass function. */ 80void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, 81 int Threshold); 82 83/** See llvm::createSimplifyLibCallsPass function. */ 84void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM); 85 86/** See llvm::createTailCallEliminationPass function. */ 87void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM); 88 89/** See llvm::createConstantPropagationPass function. */ 90void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM); 91 92/** See llvm::demotePromoteMemoryToRegisterPass function. */ 93void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM); 94 95/** See llvm::createVerifierPass function. */ 96void LLVMAddVerifierPass(LLVMPassManagerRef PM); 97 98#ifdef __cplusplus 99} 100#endif /* defined(__cplusplus) */ 101 102#endif 103