diff options
author | Chris Lattner <sabre@nondot.org> | 2002-04-10 20:31:22 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-04-10 20:31:22 +0000 |
commit | b59d8199e0a0a3d1c77cc36f3cfb1c6716a254a8 (patch) | |
tree | a0290f9e79f6b5734bd380496f14c7d0633ddd96 /include/llvm/Transforms | |
parent | 0e52e3e2210ea06525218499a9422eecca7f5066 (diff) | |
download | external_llvm-b59d8199e0a0a3d1c77cc36f3cfb1c6716a254a8.zip external_llvm-b59d8199e0a0a3d1c77cc36f3cfb1c6716a254a8.tar.gz external_llvm-b59d8199e0a0a3d1c77cc36f3cfb1c6716a254a8.tar.bz2 |
Split the CleanupGCCOutput pass into two passes, and add real life actual
documentation on when they do.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2222 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Transforms')
-rw-r--r-- | include/llvm/Transforms/IPO.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/llvm/Transforms/IPO.h b/include/llvm/Transforms/IPO.h index 3cc4e76..466cb44 100644 --- a/include/llvm/Transforms/IPO.h +++ b/include/llvm/Transforms/IPO.h @@ -1,5 +1,16 @@ //===- llvm/Transforms/CleanupGCCOutput.h - Cleanup GCC Output ---*- C++ -*--=// // +// These passes are used to cleanup the output of GCC. GCC's output is +// unneccessarily gross for a couple of reasons. This pass does the following +// things to try to clean it up: +// +// * Eliminate names for GCC types that we know can't be needed by the user. +// * Eliminate names for types that are unused in the entire translation unit +// * Fix various problems that we might have in PHI nodes and casts +// * Link uses of 'void %foo(...)' to 'void %foo(sometypes)' +// +// Note: This code produces dead declarations, it is a good idea to run DCE +// after this pass. // //===----------------------------------------------------------------------===// @@ -7,6 +18,22 @@ #define LLVM_TRANSFORMS_CLEANUPGCCOUTPUT_H class Pass; + +// CleanupGCCOutputPass - Perform all of the function body transformations. +// Pass *createCleanupGCCOutputPass(); + +// FunctionResolvingPass - Go over the functions that are in the module and +// look for functions that have the same name. More often than not, there will +// be things like: +// void "foo"(...) +// void "foo"(int, int) +// because of the way things are declared in C. If this is the case, patch +// things up. +// +// This is an interprocedural pass. +// +Pass *createFunctionResolvingPass(); + #endif |