aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-04-10 20:31:22 +0000
committerChris Lattner <sabre@nondot.org>2002-04-10 20:31:22 +0000
commitb59d8199e0a0a3d1c77cc36f3cfb1c6716a254a8 (patch)
treea0290f9e79f6b5734bd380496f14c7d0633ddd96 /include/llvm
parent0e52e3e2210ea06525218499a9422eecca7f5066 (diff)
downloadexternal_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')
-rw-r--r--include/llvm/Transforms/IPO.h27
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