* Rename to IPO.h
[oota-llvm.git] / include / llvm / Transforms / IPO.h
1 //===- llvm/Transforms/IPO.h - Interprocedural Transformations --*- C++ -*-===//
2 //
3 // This header file defines prototypes for accessor functions that expose passes
4 // in the IPO transformations library.
5 //
6 //===----------------------------------------------------------------------===//
7
8 #ifndef LLVM_TRANSFORMS_IPO_H
9 #define LLVM_TRANSFORMS_IPO_H
10
11 class Pass;
12
13 //===----------------------------------------------------------------------===//
14 // createConstantMergePass - This function returns a new pass that merges
15 // duplicate global constants together into a single constant that is shared.
16 // This is useful because some passes (ie TraceValues) insert a lot of string
17 // constants into the program, regardless of whether or not they duplicate an
18 // existing string.
19 //
20 Pass *createConstantMergePass();
21
22
23 //===----------------------------------------------------------------------===//
24 // createDeadTypeEliminationPass - Return a new pass that eliminates symbol
25 // table entries for types that are never used.
26 //
27 Pass *createDeadTypeEliminationPass();
28
29
30 //===----------------------------------------------------------------------===//
31 // FunctionResolvingPass - Go over the functions that are in the module and
32 // look for functions that have the same name.  More often than not, there will
33 // be things like:
34 //    void "foo"(...)
35 //    void "foo"(int, int)
36 // because of the way things are declared in C.  If this is the case, patch
37 // things up.
38 //
39 // This is an interprocedural pass.
40 //
41 Pass *createFunctionResolvingPass();
42
43 #endif