blob: 3af7425dd268a84d5558207f371dcc066f0f7d64 [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|* *|
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|* *|
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
37/** See llvm::createDeadArgEliminationPass function. */
38void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM);
39
Chris Lattnere48f8972009-03-06 16:52:18 +000040/** See llvm::createFunctionAttrsPass function. */
41void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM);
42
43/** See llvm::createFunctionInliningPass function. */
44void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM);
45
Rafael Espindolab84dc6b2011-07-26 15:23:23 +000046/** See llvm::createAlwaysInlinerPass function. */
47void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM);
48
Chris Lattnere48f8972009-03-06 16:52:18 +000049/** See llvm::createGlobalDCEPass function. */
50void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM);
51
52/** See llvm::createGlobalOptimizerPass function. */
53void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM);
54
55/** See llvm::createIPConstantPropagationPass function. */
56void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM);
57
Chris Lattnere48f8972009-03-06 16:52:18 +000058/** See llvm::createPruneEHPass function. */
59void LLVMAddPruneEHPass(LLVMPassManagerRef PM);
60
Wesley Pecka2ca3fa2010-04-09 20:43:20 +000061/** See llvm::createIPSCCPPass function. */
62void LLVMAddIPSCCPPass(LLVMPassManagerRef PM);
63
64/** See llvm::createInternalizePass function. */
65void LLVMAddInternalizePass(LLVMPassManagerRef, unsigned AllButMain);
66
Chris Lattnere48f8972009-03-06 16:52:18 +000067/** See llvm::createStripDeadPrototypesPass function. */
68void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM);
69
70/** See llvm::createStripSymbolsPass function. */
71void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM);
72
Gregory Szorc34c863a2012-03-21 03:54:29 +000073/**
74 * @}
75 */
76
Chris Lattnere48f8972009-03-06 16:52:18 +000077#ifdef __cplusplus
78}
79#endif /* defined(__cplusplus) */
80
81#endif