1224cef60f4d752594f6468156de0da0cd628d6efChris Lattner/*===-- IPO.h - Interprocedural Transformations C Interface -----*- C++ -*-===*\
257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|*                                                                            *|
357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|*                     The LLVM Compiler Infrastructure                       *|
457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|*                                                                            *|
557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|* This file is distributed under the University of Illinois Open Source      *|
657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|* License. See LICENSE.TXT for details.                                      *|
757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|*                                                                            *|
857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|*===----------------------------------------------------------------------===*|
957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|*                                                                            *|
10224cef60f4d752594f6468156de0da0cd628d6efChris Lattner|* This header declares the C interface to libLLVMIPO.a, which implements     *|
11224cef60f4d752594f6468156de0da0cd628d6efChris Lattner|* various interprocedural transformations of the LLVM IR.                    *|
1257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner|*                                                                            *|
1357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner\*===----------------------------------------------------------------------===*/
1457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
15224cef60f4d752594f6468156de0da0cd628d6efChris Lattner#ifndef LLVM_C_TRANSFORMS_IPO_H
16224cef60f4d752594f6468156de0da0cd628d6efChris Lattner#define LLVM_C_TRANSFORMS_IPO_H
1757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
1857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner#include "llvm-c/Core.h"
1957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
2057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner#ifdef __cplusplus
2157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnerextern "C" {
2257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner#endif
2357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
246244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/**
256244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @defgroup LLVMCTransformsIPO Interprocedural transformations
266244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @ingroup LLVMCTransforms
276244b518880842f2c15200ee041e06799e4cc779Gregory Szorc *
286244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @{
296244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */
306244b518880842f2c15200ee041e06799e4cc779Gregory Szorc
3157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createArgumentPromotionPass function. */
3257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM);
3357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
3457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createConstantMergePass function. */
3557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddConstantMergePass(LLVMPassManagerRef PM);
3657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
3757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createDeadArgEliminationPass function. */
3857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM);
3957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
4057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createFunctionAttrsPass function. */
4157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM);
4257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
4357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createFunctionInliningPass function. */
4457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddFunctionInliningPass(LLVMPassManagerRef PM);
4557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
463d72290ecb30002d4372b6afbeda73812221ac3eRafael Espindola/** See llvm::createAlwaysInlinerPass function. */
473d72290ecb30002d4372b6afbeda73812221ac3eRafael Espindolavoid LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM);
483d72290ecb30002d4372b6afbeda73812221ac3eRafael Espindola
4957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createGlobalDCEPass function. */
5057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddGlobalDCEPass(LLVMPassManagerRef PM);
5157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
5257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createGlobalOptimizerPass function. */
5357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM);
5457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
5557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createIPConstantPropagationPass function. */
5657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM);
5757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
5857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createPruneEHPass function. */
5957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddPruneEHPass(LLVMPassManagerRef PM);
6057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
6116ddd885d84beb57ac68e1503faa94cda279be4bWesley Peck/** See llvm::createIPSCCPPass function. */
6216ddd885d84beb57ac68e1503faa94cda279be4bWesley Peckvoid LLVMAddIPSCCPPass(LLVMPassManagerRef PM);
6316ddd885d84beb57ac68e1503faa94cda279be4bWesley Peck
6416ddd885d84beb57ac68e1503faa94cda279be4bWesley Peck/** See llvm::createInternalizePass function. */
6516ddd885d84beb57ac68e1503faa94cda279be4bWesley Peckvoid LLVMAddInternalizePass(LLVMPassManagerRef, unsigned AllButMain);
6616ddd885d84beb57ac68e1503faa94cda279be4bWesley Peck
6757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createStripDeadPrototypesPass function. */
6857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM);
6957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
7057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner/** See llvm::createStripSymbolsPass function. */
7157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddStripSymbolsPass(LLVMPassManagerRef PM);
7257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
736244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/**
746244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @}
756244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */
766244b518880842f2c15200ee041e06799e4cc779Gregory Szorc
7757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner#ifdef __cplusplus
7857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner}
7957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner#endif /* defined(__cplusplus) */
8057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner
8157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner#endif
82