1193323Sed/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\ 2193323Sed|* *| 3353358Sdim|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| 4353358Sdim|* Exceptions. *| 5353358Sdim|* See https://llvm.org/LICENSE.txt for license information. *| 6353358Sdim|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| 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 22360784Sdim#include "llvm-c/ExternC.h" 23296417Sdim#include "llvm-c/Types.h" 24193323Sed 25360784SdimLLVM_C_EXTERN_C_BEGIN 26193323Sed 27234353Sdim/** 28234353Sdim * @defgroup LLVMCTransformsScalar Scalar transformations 29234353Sdim * @ingroup LLVMCTransforms 30234353Sdim * 31234353Sdim * @{ 32234353Sdim */ 33234353Sdim 34193323Sed/** See llvm::createAggressiveDCEPass function. */ 35193323Sedvoid LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM); 36193323Sed 37360784Sdim/** See llvm::createDeadCodeEliminationPass function. */ 38360784Sdimvoid LLVMAddDCEPass(LLVMPassManagerRef PM); 39360784Sdim 40288943Sdim/** See llvm::createBitTrackingDCEPass function. */ 41288943Sdimvoid LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM); 42288943Sdim 43280031Sdim/** See llvm::createAlignmentFromAssumptionsPass function. */ 44280031Sdimvoid LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM); 45280031Sdim 46193323Sed/** See llvm::createCFGSimplificationPass function. */ 47193323Sedvoid LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM); 48193323Sed 49193323Sed/** See llvm::createDeadStoreEliminationPass function. */ 50193323Sedvoid LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM); 51193323Sed 52276479Sdim/** See llvm::createScalarizerPass function. */ 53276479Sdimvoid LLVMAddScalarizerPass(LLVMPassManagerRef PM); 54276479Sdim 55276479Sdim/** See llvm::createMergedLoadStoreMotionPass function. */ 56276479Sdimvoid LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM); 57276479Sdim 58193323Sed/** See llvm::createGVNPass function. */ 59193323Sedvoid LLVMAddGVNPass(LLVMPassManagerRef PM); 60193323Sed 61314564Sdim/** See llvm::createGVNPass function. */ 62314564Sdimvoid LLVMAddNewGVNPass(LLVMPassManagerRef PM); 63314564Sdim 64193323Sed/** See llvm::createIndVarSimplifyPass function. */ 65193323Sedvoid LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM); 66193323Sed 67193323Sed/** See llvm::createInstructionCombiningPass function. */ 68193323Sedvoid LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); 69193323Sed 70193323Sed/** See llvm::createJumpThreadingPass function. */ 71193323Sedvoid LLVMAddJumpThreadingPass(LLVMPassManagerRef PM); 72193323Sed 73193323Sed/** See llvm::createLICMPass function. */ 74193323Sedvoid LLVMAddLICMPass(LLVMPassManagerRef PM); 75193323Sed 76193323Sed/** See llvm::createLoopDeletionPass function. */ 77193323Sedvoid LLVMAddLoopDeletionPass(LLVMPassManagerRef PM); 78193323Sed 79221345Sdim/** See llvm::createLoopIdiomPass function */ 80221345Sdimvoid LLVMAddLoopIdiomPass(LLVMPassManagerRef PM); 81221345Sdim 82193323Sed/** See llvm::createLoopRotatePass function. */ 83193323Sedvoid LLVMAddLoopRotatePass(LLVMPassManagerRef PM); 84193323Sed 85261991Sdim/** See llvm::createLoopRerollPass function. */ 86261991Sdimvoid LLVMAddLoopRerollPass(LLVMPassManagerRef PM); 87261991Sdim 88193323Sed/** See llvm::createLoopUnrollPass function. */ 89193323Sedvoid LLVMAddLoopUnrollPass(LLVMPassManagerRef PM); 90193323Sed 91341825Sdim/** See llvm::createLoopUnrollAndJamPass function. */ 92341825Sdimvoid LLVMAddLoopUnrollAndJamPass(LLVMPassManagerRef PM); 93341825Sdim 94193323Sed/** See llvm::createLoopUnswitchPass function. */ 95193323Sedvoid LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM); 96193323Sed 97344779Sdim/** See llvm::createLowerAtomicPass function. */ 98344779Sdimvoid LLVMAddLowerAtomicPass(LLVMPassManagerRef PM); 99344779Sdim 100193323Sed/** See llvm::createMemCpyOptPass function. */ 101193323Sedvoid LLVMAddMemCpyOptPass(LLVMPassManagerRef PM); 102193323Sed 103261991Sdim/** See llvm::createPartiallyInlineLibCallsPass function. */ 104261991Sdimvoid LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM); 105261991Sdim 106193323Sed/** See llvm::createReassociatePass function. */ 107193323Sedvoid LLVMAddReassociatePass(LLVMPassManagerRef PM); 108193323Sed 109193323Sed/** See llvm::createSCCPPass function. */ 110193323Sedvoid LLVMAddSCCPPass(LLVMPassManagerRef PM); 111193323Sed 112309124Sdim/** See llvm::createSROAPass function. */ 113193323Sedvoid LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM); 114193323Sed 115309124Sdim/** See llvm::createSROAPass function. */ 116221345Sdimvoid LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM); 117221345Sdim 118309124Sdim/** See llvm::createSROAPass function. */ 119205218Srdivackyvoid LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, 120205218Srdivacky int Threshold); 121205218Srdivacky 122193323Sed/** See llvm::createSimplifyLibCallsPass function. */ 123193323Sedvoid LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM); 124193323Sed 125193323Sed/** See llvm::createTailCallEliminationPass function. */ 126193323Sedvoid LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM); 127193323Sed 128193323Sed/** See llvm::createConstantPropagationPass function. */ 129193323Sedvoid LLVMAddConstantPropagationPass(LLVMPassManagerRef PM); 130193323Sed 131193323Sed/** See llvm::demotePromoteMemoryToRegisterPass function. */ 132193323Sedvoid LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM); 133193323Sed 134205218Srdivacky/** See llvm::createVerifierPass function. */ 135205218Srdivackyvoid LLVMAddVerifierPass(LLVMPassManagerRef PM); 136205218Srdivacky 137221345Sdim/** See llvm::createCorrelatedValuePropagationPass function */ 138221345Sdimvoid LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM); 139221345Sdim 140221345Sdim/** See llvm::createEarlyCSEPass function */ 141221345Sdimvoid LLVMAddEarlyCSEPass(LLVMPassManagerRef PM); 142221345Sdim 143314564Sdim/** See llvm::createEarlyCSEPass function */ 144314564Sdimvoid LLVMAddEarlyCSEMemSSAPass(LLVMPassManagerRef PM); 145314564Sdim 146226633Sdim/** See llvm::createLowerExpectIntrinsicPass function */ 147226633Sdimvoid LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM); 148226633Sdim 149360784Sdim/** See llvm::createLowerConstantIntrinsicsPass function */ 150360784Sdimvoid LLVMAddLowerConstantIntrinsicsPass(LLVMPassManagerRef PM); 151360784Sdim 152221345Sdim/** See llvm::createTypeBasedAliasAnalysisPass function */ 153221345Sdimvoid LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM); 154221345Sdim 155280031Sdim/** See llvm::createScopedNoAliasAAPass function */ 156280031Sdimvoid LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM); 157280031Sdim 158221345Sdim/** See llvm::createBasicAliasAnalysisPass function */ 159221345Sdimvoid LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); 160221345Sdim 161344779Sdim/** See llvm::createUnifyFunctionExitNodesPass function */ 162344779Sdimvoid LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM); 163344779Sdim 164234353Sdim/** 165234353Sdim * @} 166234353Sdim */ 167221345Sdim 168360784SdimLLVM_C_EXTERN_C_END 169193323Sed 170193323Sed#endif 171