Scalar.h revision 341825
1193323Sed/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\ 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 header declares the C interface to libLLVMScalarOpts.a, which *| 11193323Sed|* implements various scalar transformations of the LLVM IR. *| 12193323Sed|* *| 13193323Sed|* Many exotic languages can interoperate with C code but have a harder time *| 14193323Sed|* with C++ due to name mangling. So in addition to C, this interface enables *| 15193323Sed|* tools written in such languages. *| 16193323Sed|* *| 17193323Sed\*===----------------------------------------------------------------------===*/ 18193323Sed 19193323Sed#ifndef LLVM_C_TRANSFORMS_SCALAR_H 20193323Sed#define LLVM_C_TRANSFORMS_SCALAR_H 21193323Sed 22296417Sdim#include "llvm-c/Types.h" 23193323Sed 24193323Sed#ifdef __cplusplus 25193323Sedextern "C" { 26193323Sed#endif 27193323Sed 28234353Sdim/** 29234353Sdim * @defgroup LLVMCTransformsScalar Scalar transformations 30234353Sdim * @ingroup LLVMCTransforms 31234353Sdim * 32234353Sdim * @{ 33234353Sdim */ 34234353Sdim 35193323Sed/** See llvm::createAggressiveDCEPass function. */ 36193323Sedvoid LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM); 37193323Sed 38341825Sdim/** See llvm::createAggressiveInstCombinerPass function. */ 39341825Sdimvoid LLVMAddAggressiveInstCombinerPass(LLVMPassManagerRef PM); 40341825Sdim 41288943Sdim/** See llvm::createBitTrackingDCEPass function. */ 42288943Sdimvoid LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM); 43288943Sdim 44280031Sdim/** See llvm::createAlignmentFromAssumptionsPass function. */ 45280031Sdimvoid LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM); 46280031Sdim 47193323Sed/** See llvm::createCFGSimplificationPass function. */ 48193323Sedvoid LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM); 49193323Sed 50193323Sed/** See llvm::createDeadStoreEliminationPass function. */ 51193323Sedvoid LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM); 52193323Sed 53276479Sdim/** See llvm::createScalarizerPass function. */ 54276479Sdimvoid LLVMAddScalarizerPass(LLVMPassManagerRef PM); 55276479Sdim 56276479Sdim/** See llvm::createMergedLoadStoreMotionPass function. */ 57276479Sdimvoid LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM); 58276479Sdim 59193323Sed/** See llvm::createGVNPass function. */ 60193323Sedvoid LLVMAddGVNPass(LLVMPassManagerRef PM); 61193323Sed 62314564Sdim/** See llvm::createGVNPass function. */ 63314564Sdimvoid LLVMAddNewGVNPass(LLVMPassManagerRef PM); 64314564Sdim 65193323Sed/** See llvm::createIndVarSimplifyPass function. */ 66193323Sedvoid LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM); 67193323Sed 68193323Sed/** See llvm::createInstructionCombiningPass function. */ 69193323Sedvoid LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); 70193323Sed 71193323Sed/** See llvm::createJumpThreadingPass function. */ 72193323Sedvoid LLVMAddJumpThreadingPass(LLVMPassManagerRef PM); 73193323Sed 74193323Sed/** See llvm::createLICMPass function. */ 75193323Sedvoid LLVMAddLICMPass(LLVMPassManagerRef PM); 76193323Sed 77193323Sed/** See llvm::createLoopDeletionPass function. */ 78193323Sedvoid LLVMAddLoopDeletionPass(LLVMPassManagerRef PM); 79193323Sed 80221345Sdim/** See llvm::createLoopIdiomPass function */ 81221345Sdimvoid LLVMAddLoopIdiomPass(LLVMPassManagerRef PM); 82221345Sdim 83193323Sed/** See llvm::createLoopRotatePass function. */ 84193323Sedvoid LLVMAddLoopRotatePass(LLVMPassManagerRef PM); 85193323Sed 86261991Sdim/** See llvm::createLoopRerollPass function. */ 87261991Sdimvoid LLVMAddLoopRerollPass(LLVMPassManagerRef PM); 88261991Sdim 89193323Sed/** See llvm::createLoopUnrollPass function. */ 90193323Sedvoid LLVMAddLoopUnrollPass(LLVMPassManagerRef PM); 91193323Sed 92341825Sdim/** See llvm::createLoopUnrollAndJamPass function. */ 93341825Sdimvoid LLVMAddLoopUnrollAndJamPass(LLVMPassManagerRef PM); 94341825Sdim 95193323Sed/** See llvm::createLoopUnswitchPass function. */ 96193323Sedvoid LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM); 97193323Sed 98193323Sed/** See llvm::createMemCpyOptPass function. */ 99193323Sedvoid LLVMAddMemCpyOptPass(LLVMPassManagerRef PM); 100193323Sed 101261991Sdim/** See llvm::createPartiallyInlineLibCallsPass function. */ 102261991Sdimvoid LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM); 103261991Sdim 104193323Sed/** See llvm::createReassociatePass function. */ 105193323Sedvoid LLVMAddReassociatePass(LLVMPassManagerRef PM); 106193323Sed 107193323Sed/** See llvm::createSCCPPass function. */ 108193323Sedvoid LLVMAddSCCPPass(LLVMPassManagerRef PM); 109193323Sed 110309124Sdim/** See llvm::createSROAPass function. */ 111193323Sedvoid LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM); 112193323Sed 113309124Sdim/** See llvm::createSROAPass function. */ 114221345Sdimvoid LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM); 115221345Sdim 116309124Sdim/** See llvm::createSROAPass function. */ 117205218Srdivackyvoid LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, 118205218Srdivacky int Threshold); 119205218Srdivacky 120193323Sed/** See llvm::createSimplifyLibCallsPass function. */ 121193323Sedvoid LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM); 122193323Sed 123193323Sed/** See llvm::createTailCallEliminationPass function. */ 124193323Sedvoid LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM); 125193323Sed 126193323Sed/** See llvm::createConstantPropagationPass function. */ 127193323Sedvoid LLVMAddConstantPropagationPass(LLVMPassManagerRef PM); 128193323Sed 129193323Sed/** See llvm::demotePromoteMemoryToRegisterPass function. */ 130193323Sedvoid LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM); 131193323Sed 132205218Srdivacky/** See llvm::createVerifierPass function. */ 133205218Srdivackyvoid LLVMAddVerifierPass(LLVMPassManagerRef PM); 134205218Srdivacky 135221345Sdim/** See llvm::createCorrelatedValuePropagationPass function */ 136221345Sdimvoid LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM); 137221345Sdim 138221345Sdim/** See llvm::createEarlyCSEPass function */ 139221345Sdimvoid LLVMAddEarlyCSEPass(LLVMPassManagerRef PM); 140221345Sdim 141314564Sdim/** See llvm::createEarlyCSEPass function */ 142314564Sdimvoid LLVMAddEarlyCSEMemSSAPass(LLVMPassManagerRef PM); 143314564Sdim 144226633Sdim/** See llvm::createLowerExpectIntrinsicPass function */ 145226633Sdimvoid LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM); 146226633Sdim 147221345Sdim/** See llvm::createTypeBasedAliasAnalysisPass function */ 148221345Sdimvoid LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM); 149221345Sdim 150280031Sdim/** See llvm::createScopedNoAliasAAPass function */ 151280031Sdimvoid LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM); 152280031Sdim 153221345Sdim/** See llvm::createBasicAliasAnalysisPass function */ 154221345Sdimvoid LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); 155221345Sdim 156234353Sdim/** 157234353Sdim * @} 158234353Sdim */ 159221345Sdim 160193323Sed#ifdef __cplusplus 161193323Sed} 162193323Sed#endif /* defined(__cplusplus) */ 163193323Sed 164193323Sed#endif 165