blob: 7a82ed4641415b7099f117b0646b6c8690875c95 [file] [log] [blame]
Chris Lattnera59518272009-03-06 16:54:19 +00001/*===-- IPO.h - Interprocedural Transformations C Interface -----*- C++ -*-===*\
Chris Lattnere48f8972009-03-06 16:52:18 +00002|* *|
Chandler Carruth2946cd72019-01-19 08:50:56 +00003|* 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 *|
Chris Lattnere48f8972009-03-06 16:52:18 +00007|* *|
8|*===----------------------------------------------------------------------===*|
9|* *|
Chris Lattnera59518272009-03-06 16:54:19 +000010|* This header declares the C interface to libLLVMIPO.a, which implements *|
11|* various interprocedural transformations of the LLVM IR. *|
Chris Lattnere48f8972009-03-06 16:52:18 +000012|* *|
13\*===----------------------------------------------------------------------===*/
14
Chris Lattnera59518272009-03-06 16:54:19 +000015#ifndef LLVM_C_TRANSFORMS_IPO_H
16#define LLVM_C_TRANSFORMS_IPO_H
Chris Lattnere48f8972009-03-06 16:52:18 +000017
Eric Christophera6b96002015-12-18 01:46:52 +000018#include "llvm-c/Types.h"
Chris Lattnere48f8972009-03-06 16:52:18 +000019
20#ifdef __cplusplus
21extern "C" {
22#endif
23
Gregory Szorc34c863a2012-03-21 03:54:29 +000024/**
25 * @defgroup LLVMCTransformsIPO Interprocedural transformations
26 * @ingroup LLVMCTransforms
27 *
28 * @{
29 */
30
Chris Lattnere48f8972009-03-06 16:52:18 +000031/** See llvm::createArgumentPromotionPass function. */
32void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM);
33
34/** See llvm::createConstantMergePass function. */
35void LLVMAddConstantMergePass(LLVMPassManagerRef PM);
36
Matthew Simpsoncb585582017-10-25 13:40:08 +000037/** See llvm::createCalledValuePropagationPass function. */
38void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM);
39
Chris Lattnere48f8972009-03-06 16:52:18 +000040/** See llvm::createDeadArgEliminationPass function. */
41void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM);
42
Chris Lattnere48f8972009-03-06 16:52:18 +000043/** See llvm::createFunctionAttrsPass function. */
44void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM);
45
46/** See llvm::createFunctionInliningPass function. */
47void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM);
48
Rafael Espindolab84dc6b2011-07-26 15:23:23 +000049/** See llvm::createAlwaysInlinerPass function. */
50void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM);
51
Chris Lattnere48f8972009-03-06 16:52:18 +000052/** See llvm::createGlobalDCEPass function. */
53void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM);
54
55/** See llvm::createGlobalOptimizerPass function. */
56void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM);
57
58/** See llvm::createIPConstantPropagationPass function. */
59void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM);
60
Chris Lattnere48f8972009-03-06 16:52:18 +000061/** See llvm::createPruneEHPass function. */
62void LLVMAddPruneEHPass(LLVMPassManagerRef PM);
63
Wesley Pecka2ca3fa2010-04-09 20:43:20 +000064/** See llvm::createIPSCCPPass function. */
65void LLVMAddIPSCCPPass(LLVMPassManagerRef PM);
66
67/** See llvm::createInternalizePass function. */
68void LLVMAddInternalizePass(LLVMPassManagerRef, unsigned AllButMain);
69
Chris Lattnere48f8972009-03-06 16:52:18 +000070/** See llvm::createStripDeadPrototypesPass function. */
71void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM);
72
73/** See llvm::createStripSymbolsPass function. */
74void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM);
75
Gregory Szorc34c863a2012-03-21 03:54:29 +000076/**
77 * @}
78 */
79
Chris Lattnere48f8972009-03-06 16:52:18 +000080#ifdef __cplusplus
81}
82#endif /* defined(__cplusplus) */
83
84#endif