Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*===-- IPO.h - Interprocedural Transformations C Interface -----*- C++ -*-===*\
  2. |*                                                                            *|
  3. |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
  4. |* Exceptions.                                                                *|
  5. |* See https://llvm.org/LICENSE.txt for license information.                  *|
  6. |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
  7. |*                                                                            *|
  8. |*===----------------------------------------------------------------------===*|
  9. |*                                                                            *|
  10. |* This header declares the C interface to libLLVMIPO.a, which implements     *|
  11. |* various interprocedural transformations of the LLVM IR.                    *|
  12. |*                                                                            *|
  13. \*===----------------------------------------------------------------------===*/
  14.  
  15. #ifndef LLVM_C_TRANSFORMS_IPO_H
  16. #define LLVM_C_TRANSFORMS_IPO_H
  17.  
  18. #include "llvm-c/ExternC.h"
  19. #include "llvm-c/Types.h"
  20.  
  21. LLVM_C_EXTERN_C_BEGIN
  22.  
  23. /**
  24.  * @defgroup LLVMCTransformsIPO Interprocedural transformations
  25.  * @ingroup LLVMCTransforms
  26.  *
  27.  * @{
  28.  */
  29.  
  30. /** See llvm::createConstantMergePass function. */
  31. void LLVMAddConstantMergePass(LLVMPassManagerRef PM);
  32.  
  33. /** See llvm::createMergeFunctionsPass function. */
  34. void LLVMAddMergeFunctionsPass(LLVMPassManagerRef PM);
  35.  
  36. /** See llvm::createCalledValuePropagationPass function. */
  37. void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM);
  38.  
  39. /** See llvm::createDeadArgEliminationPass function. */
  40. void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM);
  41.  
  42. /** See llvm::createFunctionAttrsPass function. */
  43. void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM);
  44.  
  45. /** See llvm::createFunctionInliningPass function. */
  46. void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM);
  47.  
  48. /** See llvm::createAlwaysInlinerPass function. */
  49. void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM);
  50.  
  51. /** See llvm::createGlobalDCEPass function. */
  52. void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM);
  53.  
  54. /** See llvm::createGlobalOptimizerPass function. */
  55. void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM);
  56.  
  57. /** See llvm::createIPSCCPPass function. */
  58. void LLVMAddIPSCCPPass(LLVMPassManagerRef PM);
  59.  
  60. /** See llvm::createInternalizePass function. */
  61. void LLVMAddInternalizePass(LLVMPassManagerRef, unsigned AllButMain);
  62.  
  63. /**
  64.  * Create and add the internalize pass to the given pass manager with the
  65.  * provided preservation callback.
  66.  *
  67.  * The context parameter is forwarded to the callback on each invocation.
  68.  * As such, it is the responsibility of the caller to extend its lifetime
  69.  * until execution of this pass has finished.
  70.  *
  71.  * @see llvm::createInternalizePass function.
  72.  */
  73. void LLVMAddInternalizePassWithMustPreservePredicate(
  74.     LLVMPassManagerRef PM,
  75.     void *Context,
  76.     LLVMBool (*MustPreserve)(LLVMValueRef, void *));
  77.  
  78. /** See llvm::createStripDeadPrototypesPass function. */
  79. void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM);
  80.  
  81. /** See llvm::createStripSymbolsPass function. */
  82. void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM);
  83.  
  84. /**
  85.  * @}
  86.  */
  87.  
  88. LLVM_C_EXTERN_C_END
  89.  
  90. #endif
  91.