Split the CleanupGCCOutput pass into two passes, and add real life actual
authorChris Lattner <sabre@nondot.org>
Wed, 10 Apr 2002 20:31:22 +0000 (20:31 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 10 Apr 2002 20:31:22 +0000 (20:31 +0000)
documentation on when they do.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2222 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Transforms/IPO.h

index 3cc4e76aae25ee278894cf1458ff78e3f80a6ca9..466cb4446c2ea9bec33036b327ba2592f619324a 100644 (file)
@@ -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