Home | History | Annotate | Download | only in Transforms
      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